说我有一个外部类A,它嵌套了内部类B。A是C的子类。那么B也是C的子类吗?由于B可以访问A的所有私有成员,因此可以访问A的(公共的和受保护的)超类,因此我认为B成为C的子类。
我的思路正确吗?
我们非常感谢您的帮助。
答案 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
如果B
是C
的子类,则后者将是合法的转让。但事实并非如此。
答案 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的(静态)成员,该成员可以从其他成员继承。是否上课。