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,在某些情况下可能满足多重继承的要求。

在构建内部类实例时,外部类实例应该已经存在。你能期待什么样的建设?这是一个很好的观点。比如说,如果我在子类中有一个静态方法,它返回内部类的一个实例,这会有什么不同吗?我认为最好简单明了地解释一下,你想要实现什么,而不是如何将当前的方钉穿过圆孔。您试图做什么,这导致您尝试使用内部类作为解决方案?我试图绕过多重继承规则,以找出是否有任何方法可以做到这一点。如果可能的话,它将如何表现。这不是出于好奇,你不能绕过多重继承规则,这是语言规范的要点。