Java 为什么内部类不扩展外部类的超类?有没有办法做到这一点?
我有两个基类,一个子类扩展一个基类,一个内部类扩展另一个类 基类:Java 为什么内部类不扩展外部类的超类?有没有办法做到这一点?,java,Java,我有两个基类,一个子类扩展一个基类,一个内部类扩展另一个类 基类: public class B1 {} public class B2 {} 子类: public class A extends B1{ class B extends B2{} } 方法: execute(B1 b) { ..do something } 电话: 这是失败的。内部类不扩展外部类的超类吗?内部类构造函数中是否有方法调用外部类的构造函数? 现在就说这样的话 B() { super
public class B1 {}
public class B2 {}
子类:
public class A extends B1{
class B extends B2{}
}
方法:
execute(B1 b) {
..do something
}
电话:
这是失败的。内部类不扩展外部类的超类吗?内部类构造函数中是否有方法调用外部类的构造函数?
现在就说这样的话
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();
调用静态方法:
public class A extends B1{
static B getInner() {
return new B();
}
static class B extends B2{}
}
A.B inner = A.getInner();
不,而且Java没有多重继承。因此,如果内部类确实扩展了外部类或外部类的超类,那么类B扩展B2{}将是非法的。否,内部类不能扩展外部类的超类
您在一条评论中明确表示希望绕过多重继承规则。虽然Java类不直接支持多重继承,但Java 8为接口引入了Java 8,在某些情况下可能满足多重继承的要求。在构建内部类实例时,外部类实例应该已经存在。你能期待什么样的建设?这是一个很好的观点。比如说,如果我在子类中有一个静态方法,它返回内部类的一个实例,这会有什么不同吗?我认为最好简单明了地解释一下,你想要实现什么,而不是如何将当前的方钉穿过圆孔。您试图做什么,这导致您尝试使用内部类作为解决方案?我试图绕过多重继承规则,以找出是否有任何方法可以做到这一点。如果可能的话,它将如何表现。这不是出于好奇,你不能绕过多重继承规则,这是语言规范的要点。