在java中,嵌套的内部类是否自动继承外部类的超类?
假设我有一个外部类A,它是嵌套的内部类B。A是C的子类。那么B也是C的子类吗?因为B可以访问A的所有私有成员,从而访问它的超类(公共和受保护),所以我认为B成为C的一个子类 我的思路对吗在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
非常感谢您的帮助。以下是您所描述的内容:
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谢谢你的回答,如果你能解释一下我的想法中的错误,我将不胜感激