java: private, protected, public

时间:2023-12-28 18:08:56

这三个 「可访问修饰符」,是一个老生常谈的话题了。在 C++ 中也有类似的概念。

按其修饰对象的不同,分为几种用法小记一下:

用于类

只有 public 可以修饰类;private 和 protected 不能修饰类。

  • 使用 public 修饰的类,可以被其它「包」中的类访问。
  • 不使用 public 修饰的类(也就是没有修饰符),只能被同一个「包」内的类访问。

用于类的成员

  • private 修饰的成员,只能被在类内部使用,不能在类外部访问。
  • 无修饰符的成员,只允许被同一包内的类访问。
  • protected 修饰的成员,允许被同一包内的类访问,还允许被子类使用。
  • public 修饰的成员,允许任意类访问。

这里描述的边界有三个:

  1. 类内和类外
  2. 包内和包外
  3. 是否是子类