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);
    }
}

CA 的子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' 是官话。不确定你从哪里得到的;术语含糊不清,也许您阅读的句子将不同的含义与这些词相关联(privateprotectedmember variable, subclass, superclass), 但由于这些词的定义相当明确,我很难想象它可能会驱动什么在。也许是样式指令(例如,您应该将 parent 的 parent 中的受保护内容视为私有内容,即不要触摸它们)。

如果这是样式指令,我也不同意。明显的论点是 'they are implementation details of your parent class' ,这在几乎所有合理的继承用法中都是显而易见的,所以除非我遗漏了另一个原因,否则这也不对。