我有两个基类,一个子类扩展一个基类,内部类扩展另一个类。
基础课程:
public class B1 {}
public class B2 {}
子类:
public class A extends B1{
class B extends B2{}
}
方法:
execute(B1 b) {
..do something
}
呼叫:
A a = new A();
A.B inner = a.new B();
execute(inner);
这是失败的。内部类是否不扩展外部类的超类?内部类构造函数中是否有一种方法可以调用外部类的构造函数? 说这样的话(现在失败了......)
B() {
super();
A()/outer();
}
使用静态方法修改:
public class A extends B1{
static B getInner() {
return new B();
}
static class B extends B2{}
}
调用静态方法:
A.B inner = A.getInner();
答案 0 :(得分:5)
不,Java没有多重继承。因此,如果内部类确实扩展了外部类(或外部类'超类),那么class B extends B2{}
将是非法的。
答案 1 :(得分:0)
不,内部类不能扩展外部类的超类。
您在评论中澄清了您想绕过多重继承规则。尽管Java类不直接支持多重继承,但Java 8为接口引入了default methods,这可能满足在某些情况下多重继承的需求。