在Java中共有四个:
- public —— 对外部完全可见
- protected —— 对本包和所有子类可见
- 默认(不需要修饰符)—— 对本包可见
- private —— 仅对本类可见
从上到下,public的开放程度最高。
- | 对外完全可见 | 对本包和所有子类可见 | 仅对本包可见 | 仅对本类可见 |
---|---|---|---|---|
访问控制修饰符 | Public | Protected | 默认(无修饰符) | Private |
同一包中的其它类 | ✓ | ✓ | ✓ | ✗ |
同一包中的子类 | ✓ | ✓ | ✓ | ✗ |
不同包中的其它类 | ✓ | ✗ | ✗ | ✗ |
不同包中的子类 | ✓ | ✓ | ✗ | ✗ |
简言之就是,public全开放,protected对本包和子类(不论是不是在本包中)开放,默认的只对本包开放(不论是不是子类),private仅对本类开放(只有定义它的类内部才能够使用,非常不开放)。
建议在定义每个类的私有字段,也就是成员变量时使用private修饰符,这样才能够确保类的封装性