java - 私有(private)字段是否被子类继承?

标签 java inheritance private-members

我读到子类不能继承私有(private)字段或方法。然而,在这个例子中

class SuperClass {
    private int n=3;
    int getN() {
        return n;
    }
}

class SubClass extends SuperClass {
    public static void main(String[] args) {
        SubClass e = new SubClass();
        System.out.println("n= " + e.getN());
    }
}

当我运行 main 时,我得到的输出为 n=3。这似乎 SubClassSuperClass 继承了私有(private)属性 n

那么,请解释一下这里发生了什么。谢谢。

最佳答案

子类“拥有”其父类(super class)的字段,但不能直接访问它们。同样,子类“具有”私有(private)方法,但您不能直接从子类调用或覆盖它们。

Java documentation on inheritance , 它说

A subclass does not inherit the private members of its parent class.

但是,我发现将其视为更有用

A subclass inherits the private members of its parent class but does not have access to them

但这归结为语义。

关于java - 私有(private)字段是否被子类继承?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8152574/

相关文章:

java - C++、Java 和 JavaScript 异常处理之间有什么区别?

c++ - 继承编译时还是运行时?

c++ - 纯虚函数和覆盖函数 (c++)

java - 我的私有(private)成员如何设置为空?

java - 使用 JOptionPane 的 Java 的 If Else 语句

java - 用于在 ElasticSearch 中搜索短语的分析器

java - 如何在java中编写一个可以接受List<Integer>或List<Double>的重载函数?

java - 扩展 JFrame 与在程序中创建它

iPhone静态库: How to hide instance variable

javascript - “Private” Javascript 中的属性继承