Java 后端面试题库 / 全部题解免费阅读理解原理,有条理地回答

子类能从父类继承哪些成员?

查看完整题解

参考回答

直接回答

子类能按访问与继承规则获得父类的 public、protected 成员,同包情况下还可能获得包访问成员;private 成员不作为子类的继承成员。构造器不会被继承。是否能在某个位置使用成员,还需要结合访问权限、包、模块以及具体表达式判断。

讲清原理

父类私有字段仍可作为子类对象中父类状态的一部分存在,并由父类方法操作。“不继承 private 成员”不等于对象里没有父类的私有状态。

继承的实例方法可能被重写,静态方法和字段可能被隐藏,final 方法则不能被重写。跨包 protected 的访问也有额外限制,不能解释成“任何拿到父类对象的子类代码都能任意访问”。

例子与易错点

class Parent {
    private int secret = 6;
    protected int readSecret() { return secret; }
}
class Child extends Parent {
    int read() { return readSecret(); }
}
System.out.println(new Child().read()); // 6

子类通过合法继承的方法取得结果,不是直接把 secret 变成自己的可访问字段。静态字段若来自父类,也不会因为创建多个子类对象就自动复制多份;构造器和初始化过程应与成员继承分开讨论。

相关题:第 4 题、第 29 题、第 34 题、第 36 题。

这道题,你掌握得怎么样?

掌握程度由你主动标记,阅读和收藏不会自动改变状态。