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



假设我有一个外部类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

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

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

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

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

最新更新