其实菱形继承的副作用只是因为公共基类的成员变量
Java的接口可以做出类似菱形继承的结构,但因为公共基类(接口?)中没有成员变量,所以没有二义性问题啦
当然也可以使用内部类(嵌套类)来实现类似多继承,不必担心会发生钻石危机,因为用内部类实现多继承过程中由设计者重新进行函数命名,从而避免了钻石危机。下面用代码来进行说明:
要继承的类 Father。
要继承的类 Mother。
类 Son 同时继承了 Father 和 Mother 的 output() 方法的实现。
测试结果如下:
father
mother
Java的接口可以做出类似菱形继承的结构,但因为公共基类(接口?)中没有成员变量,所以没有二义性问题啦
当然也可以使用内部类(嵌套类)来实现类似多继承,不必担心会发生钻石危机,因为用内部类实现多继承过程中由设计者重新进行函数命名,从而避免了钻石危机。下面用代码来进行说明:
要继承的类 Father。
public class Father {
public void output() {
System.out.println("father");
}
}
要继承的类 Mother。
public class Mother {
public void output() {
System.out.println("mother");
}
}
类 Son 同时继承了 Father 和 Mother 的 output() 方法的实现。
public class Son {
class Father_son extends Father {
}
class Mother_son extends Mother {
}
public void father() {
(new Father_son()).output();
}
public void mother() {
(new Mother_son()).output();
}
}
测试类 MainTest。
public class MainTest {
public static void main(String[] args) {
Son test = new Son();
test.father();
test.mother();
}
}
测试结果如下:
father
mother