5

在 C++ 中,你可以扩展很多类,那么在 Java 中这个类只能扩展一个类的设计有什么好处呢?既然接口是一种纯类(实际上是抽象类),为什么不像类扩展那样限制接口实现的数量呢?

4

1 回答 1

21

只能扩展一个基类是解决菱形问题的一种方法。当一个类扩展了两个都实现相同方法的基类时,就会出现这个问题——你怎么知道要调用哪一个?

A.java:

public class A {
    public int getValue() { return 0; }
}

B.java:

public class B {
    public int getValue() { return 1; }
}

C.java:

public class C extends A, B {
    public int doStuff() { 
        return super.getValue(); // Which superclass method is called?
    }
}

由于接口不能有实现,所以不会出现同样的问题。如果两个接口包含具有相同签名的方法,那么实际上只有一个方法并且仍然没有冲突。

于 2013-09-18T03:34:07.960 回答