先单独说一点,让你可以在朋友面前装逼:接口也能被继承,只不过是被接口继承
对比:
1、都能包含抽象的方法,这些抽象的方法用于描述类具备的功能,不提供具体的实现(jdk1.8允许接口有一个default的实现方法)
2、接口是对事物行为的抽象,而抽象类是对事务本质的抽象;
3、接口中的变量必须给出初始值,抽象类可以不给;
4、一个类只能继承一个抽象类,但可以实现多个接口;
5、抽象类中可以写非抽象的方法,从而避免在子类中重复书写它们,这样可以提高代码的复用性,这是抽象类的优势;接口中只能有抽象的方法;
针对第二点和第四点举个例帮助理解:
对于抽象类:比方说有公鸡、母鸡、公狗、母狗,我们可以抽象出两个更高级的类,鸡类和狗类,因为你不能又是鸡又是狗,所以你只能继承其中一个,这就是为什么抽象类只能单继承;
对于接口:众所周知,鸡都会唱、跳、rap,于是,我们可以把这些鸡的基本操作抽象成接口A,而有的鸡通过练习两年半可能学会打篮球,那么对于这种鸡的高端操作我们可以再抽象出一个接口B,重点来了,对于常规鸡,这种鸡只会唱跳rap,所以只需要实现接口A;那对于一些高端鸡,这种鸡既会唱跳rap又会打篮球,我们就同时实现接口A和接口B,这就是为什么接口可以多实现,skr~;