私有成员归父类独享,子类无法直接访问;可通过父类提供的protected或public的getter/setter方法间接访问,体现封装性。

在Java中,父类的私有成员不能被子类直接访问。这是由Java的访问控制机制决定的。
私有成员的作用范围
使用 private 修饰的字段或方法只能在定义它们的类内部访问。即使子类继承了父类,也无法直接访问这些私有成员。
- 私有成员不会被子类“继承”为可访问的成员
- 子类对象中虽然存在父类的私有成员(内存上是有的),但无法直接读取或修改
- 试图通过 this.privateField 或 super.privateField 访问都会编译报错
如何间接访问父类私有成员
如果需要让子类能获取或修改父类的私有数据,可以通过以下方式提供间接访问:
- 在父类中提供 protected 或 public 的 getter 和 setter 方法
- 父类提供受保护的(protected)方法来操作私有字段
例如:
立即学习“Java免费学习笔记(深入)”;
class Parent {
private int value = 100;
protected int getValue() {
return value;
}
}
class Child extends Parent {
public void printValue() {
System.out.println(getValue()); // 正确:通过受保护的方法访问
}
}
常见误解澄清
有些人认为“子类继承了父类的所有东西”,所以应该能访问私有成员。这种理解不准确。
- 子类确实会继承父类的私有成员(它们存在于子类对象的内存布局中)
- 但继承不等于可访问。访问权限仍受 private 限制
- 这也是封装原则的体现:父类可以隐藏实现细节










