在java中,嵌套的内部类是否自动继承外部类的超类?

在java中,嵌套的内部类是否自动继承外部类的超类?,java,inheritance,inner-classes,superclass,Java,Inheritance,Inner Classes,Superclass,假设我有一个外部类A,它是嵌套的内部类B。A是C的子类。那么B也是C的子类吗?因为B可以访问A的所有私有成员,从而访问它的超类(公共和受保护),所以我认为B成为C的一个子类 我的思路对吗 非常感谢您的帮助。以下是您所描述的内容: class C {} class A extends C { static class B {} } 作为a中的嵌套类,不会使B成为C的子类。访问成员不是子类的定义特征 假设您尝试将B类型的对象分配给C类型的变量 C c1 = new A(); // OK

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

我的思路对吗


非常感谢您的帮助。

以下是您所描述的内容:

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

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

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

class C {}

class A extends C {

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

嵌套类B只是a的一个(静态)成员,就像它的任何其他成员一样。您可以在B中访问C的公共、受保护甚至包访问方法和变量,因为A从C继承了这些成员。因为B是A的嵌套类,所以您可以访问(静态)可以从其他类继承或不继承的成员。

否。作为
A
中的嵌套类并不等于是
A
超类的子类。访问成员不是作为子类的定义特征。@khelwood谢谢你的回答,如果你能解释一下我的想法中的错误,我将不胜感激