why Java class can extends only one class but implements many interfaces?
本问题已经有最佳答案,请猛点这里访问。
在C++中,你可以扩展很多类,那么在爪哇中这个设计只能扩展一个类的优点是什么?既然接口是纯类(实际上是抽象类),为什么不像类扩展那样限制接口实现的数量呢?
只扩展一个基类是解决菱形问题的一种方法。这是一个问题,当一个类扩展两个基本类,两个基本类都实现相同的方法时,会发生这种问题-您如何知道要调用哪个基本类?
A.java:
1 2 3 | public class A { public int getValue() { return 0; } } |
B.java:
1 2 3 | public class B { public int getValue() { return 1; } } |
C.java:
1 2 3 4 5 | public class C extends A, B { public int doStuff() { return super.getValue(); // Which superclass method is called? } } |
由于接口不能有实现,所以不会出现相同的问题。如果两个接口包含具有相同签名的方法,那么实际上只有一个方法,并且没有冲突。