嵌套的内部类会自动从Java中外部类的超类继承吗?

时间:2019-10-12 13:27:35

标签: java inheritance inner-classes superclass

说我有一个外部类A,它嵌套了内部类B。A是C的子类。那么B也是C的子类吗?由于B可以访问A的所有私有成员,因此可以访问A的(公共的和受保护的)超类,因此我认为B成为C的子类。

我的思路正确吗?

我们非常感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

这似乎是您要描述的内容:

class C {} 
class A extends C {
    static class B {}
}

成为A中的嵌套类不会使B成为C的子类。访问成员不是成为子类的定义特征。

假设您尝试将B类型的对象分配给C类型的变量。

C c1 = new A(); // OK -- A is a subclass of C
C c2 = new A.B(); // Not OK

如果BC的子类,则后者将是合法的转让。但事实并非如此。

答案 1 :(得分:0)

我不这么认为。如果要B扩展C,则可以明确地说:

class C {}

class A extends C {

    static class B extends C {
        //Todo...
    }
}

嵌套类B就像它的任何其他成员一样,只是A的(静态)成员。由于A从C继承了那些成员,因此您可以访问B中的C的公共和受保护的甚至是包访问方法和变量。由于B是A的嵌套类,因此您可以访问A的(静态)成员,该成员可以从其他成员继承。是否上课。