为什么内部类不会扩展外部类的超类?有没有办法做到这一点?

时间:2016-12-23 18:15:33

标签: java

我有两个基类,一个子类扩展一个基类,内部类扩展另一个类。

基础课程:

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();

2 个答案:

答案 0 :(得分:5)

不,Java没有多重继承。因此,如果内部类确实扩展了外部类(或外部类'超类),那么class B extends B2{}将是非法的。

答案 1 :(得分:0)

不,内部类不能扩展外部类的超类。

您在评论中澄清了您想绕过多重继承规则。尽管Java类不直接支持多重继承,但Java 8为接口引入了default methods,这可能满足在某些情况下多重继承的需求。