【发布时间】:2021-10-04 03:12:34
【问题描述】:
最近我在练习 Java 中的继承主题。我遇到了这样的声明“超类中的protected成员变量是子类中的private”。
我的问题是,如果一个子类本身是另一个子类的父类,那么该子类是否能够访问基类的成员变量?
public class A
{
protected int a;
public A(int a)
{
this.a = a;
}
}
public class B extends A
{
public B(int a)
{
super(a);
}
}
public class C extends B
{
public C(int a)
{
super(a);
}
@Override
public String toString()
{
return ("" + this.a);
}
}
public class Test
{
public static void main(String args[])
{
C c = new C(5);
System.out.println(c);
}
}
C,A 的子类,是否可以访问a,因为按照上面的逻辑,protected 在 B 中变成了private,而private 变量不能被继承?
测试它会打印 5,那么它是如何工作的呢?
【问题讨论】:
-
干得好,测试和揭穿一个绝对不正确的陈述!准点!
标签: java inheritance access-modifiers