java - 私有(private)成员和继承

标签 java inheritance

<分区>

我在教科书中读到,标记为私有(private)的类成员不会被继承。 所以我想如果类 A 有一个 private 变量 x 而类 B 会扩展类 A 那么 B 类中就没有变量 x 了。 但是,以下示例表明我误解了这一点:

public class testdrive
{
    public static void main(String[] args) {
        B b = new B();
        b.setLength(32);
        System.out.print(b.getLength());
    }
}

class A {
    private int length;
    public void setLength(int len) {
        length = len;
    }
    public int getLength() {
        return length;
    }
}

class B extends A {
    public void dummy() {
    }
}

结果是 32,我很困惑,因为它看起来像带有 ref b 的对象现在有变量 length 并且它的值为 32。但是 ref b 指的是从 B 类创建的对象,其中未定义 length 变量。 那么真相是什么,类B是否继承了private变量length?如果是这样,private 变量不被继承是什么意思?

最佳答案

private 字段隐藏在B 中。但是,您的 public 方法是继承的并且是可访问的,并且它们可以访问私有(private)字段。

关于java - 私有(private)成员和继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27092107/

相关文章:

c# - 有没有办法为重载运算符调用基方法? C#

delphi - 使用泛型和嵌套记录助手进行继承

java - Java : java. io.FileNotFoundException 中的错误:C:\Users\FSSD\Desktop\My Test(访问被拒绝)

java - 在Java中将一个对象的引用分配给另一个对象?

java - JX-Browserview重叠系统现有内容

java - 使用 Java 中的标准输入/输出与 C 程序通信

python - 在python中动态派生一个类

c++ - 在派生类中专门化基类的模板化成员函数

java - 以一对一关系分配值

java datagramchannel数据丢失