1、什么叫菱形继承
菱形继承用通俗的话来说就是A继承B和C,B和C又继承于D。
直接看图片会清晰很多
但是由于java里是不允许抽象类多继承的,所以用接口代替
public interface D{
void D();
}
public interface C{
void C();
}
public interface B{
void B();
}
public interface A implements B,C{
@Override
public void B() {
System.out.println("B");
}
@Override
public void C() {
System.out.println("C");
}
@Override
public void D() {
System.out.println("D");
}
public static void main(String[] args) {
B t1 = new A();
C t2 = new A();
t1.B();
t1.D();
t2.C();
t2.D();
}
}
发现java中并不会像c++一样会报错。然后我在 StackOverFlow 中查到,Java 中不存在菱形继承导致的问题,因为具有相同方法签名的两个方法会被合并成一个。