Java - 子类中的受保护变量是什么类型?
Java - What type are protected variables in subclasses?
最近在Java练习继承题目。我遇到了这样的说法,“protected
super class 中的成员变量是 private
in a subclass”。
我的问题是,如果一个subclass本身是另一个subclass的parent,那个subclass是否能够访问base[=]的成员变量29=]?
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
的子class,是否能够访问 a
,因为根据上述逻辑,protected
在 B 中变为 private
并且 private
变量不能被继承?
测试它确实打印了 5,那么它是如何工作的?
I came across this fact that "protected member variables in super class is private in subclass".
让我为您更正一下:
I came across this lie that "protected member variables in super class is private in subclass".
如您的实验所示,您的 'fact' 是官话。不确定你从哪里得到的;术语含糊不清,也许您阅读的句子将不同的含义与这些词相关联(private、protected、member variable, subclass, superclass), 但由于这些词的定义相当明确,我很难想象它可能会驱动什么在。也许是样式指令(例如,您应该将 parent 的 parent 中的受保护内容视为私有内容,即不要触摸它们)。
如果这是样式指令,我也不同意。明显的论点是 'they are implementation details of your parent class' ,这在几乎所有合理的继承用法中都是显而易见的,所以除非我遗漏了另一个原因,否则这也不对。
最近在Java练习继承题目。我遇到了这样的说法,“protected
super class 中的成员变量是 private
in a subclass”。
我的问题是,如果一个subclass本身是另一个subclass的parent,那个subclass是否能够访问base[=]的成员变量29=]?
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
的子class,是否能够访问 a
,因为根据上述逻辑,protected
在 B 中变为 private
并且 private
变量不能被继承?
测试它确实打印了 5,那么它是如何工作的?
I came across this fact that "protected member variables in super class is private in subclass".
让我为您更正一下:
I came across this lie that "protected member variables in super class is private in subclass".
如您的实验所示,您的 'fact' 是官话。不确定你从哪里得到的;术语含糊不清,也许您阅读的句子将不同的含义与这些词相关联(private、protected、member variable, subclass, superclass), 但由于这些词的定义相当明确,我很难想象它可能会驱动什么在。也许是样式指令(例如,您应该将 parent 的 parent 中的受保护内容视为私有内容,即不要触摸它们)。
如果这是样式指令,我也不同意。明显的论点是 'they are implementation details of your parent class' ,这在几乎所有合理的继承用法中都是显而易见的,所以除非我遗漏了另一个原因,否则这也不对。