Java的接口有继承和实现两个概念,接口可以继承另一个接口,并获得其父接口里的所有方法和成员变量,接口也可以被一个类实现,实现接口的类需要实现接口及其父接口里的所有抽象方法,怎么理解呢? (1)如果...
Java的接口有继承和实现两个概念,接口可以继承另一个接口,并获得其父接口里的所有方法和成员变量,接口也可以被一个类实现,实现接口的类需要实现接口及其父接口里的所有抽象方法,怎么理解呢?
(1)如果接口A继承了接口B,那么接口A就继承了接口B的所有抽象方法;
(2)当一个类C实现接口A的时候,就需要实现接口A和接口B的全部抽象方法;(为什么不说全部方法,要加上“抽象”这个定语?因为Jdk1.8增加了default关键字,允许接口里有非抽象方法存在了,这些非抽象方法可以不被接口的实现类实现,这就是另外的问题了,这里不详细展开了,又兴趣可以自行参看相关文档);
(3)当一个类D实现接口B的时候,只要实现接口B的抽象方法就好了。
这里需要补充一下,为什么类不可以多继承,而接口却可以?
类只能单继承,也就是说一个类只能有一个父类,这是因为如果一个子类A继承了父类B和父类C,当父类B和父类C中有一个名字相同并且参数列表相同的方法时,类A就会产生混淆,所以只能单继承,单继承有时候会限制类的扩展性;
接口却可以实现多继承,因为接口里的方法都是抽象方法(default修饰的非抽象方法除外,这些非抽象方法会带来混淆,这里暂不讨论),并没有具体的方法体,只有接口的实现类提供了方法的实现,所以不会产生混淆。