在面向对象编程中,继承关系下的访问权限控制主要通过 public、protected 和 private 三种关键字来实现。它们决定了基类(父类)的成员在派生类(子类)以及外部代码中是否可访问。
public 成员:完全开放
被声明为 public 的成员在任何地方都可以访问:
- 在基类内部可以访问
- 在派生类中可以直接访问
- 在类外部通过对象实例也可以访问
在继承时,如果派生类以 public 方式继承基类,public 成员在派生类中仍为 public。
protected 成员:子类可见
protected 成员对外部不可见,但对派生类是可访问的:
- 在基类中可以访问
- 在派生类中可以直接访问
- 在类外部不能通过对象访问(不可见)
这是专为继承设计的权限,适合那些只希望子类使用、不对外暴露的成员。
private 成员:仅本类可见
private 成员只能在定义它的类内部访问:
- 在基类中可以访问
- 在派生类中无法直接访问(不可见)
- 在类外部也不能访问
即使派生类继承了基类,也无法访问其 private 成员,这些成员不会被“继承”到可操作的范围中。
继承方式对访问权限的影响
除了成员自身的访问修饰符,继承时的访问限定也会影响结果。例如在 c++ 中:
- public 继承:基类的 public 成员在派生类中仍是 public,protected 保持 protected
- protected 继承:基类的 public 和 protected 成员在派生类中都变为 protected
- private 继承:所有基类成员在派生类中都变为 private
在 Java 中,没有继承访问控制符这一语法,继承默认是 public 的,但父类成员的访问仍受其修饰符限制。
基本上就这些。public 完全开放,protected 限于子类,private 完全封闭。合理使用这三种权限,能有效控制类的封装性和继承的安全性。
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END