public/private/protect/ 的区别
- public: Java语言中访问限制最宽的修饰符,一般称之为“公共的”。被其修饰的类、属性以及方法不 仅可以跨类访问,而且允许跨包(package)访问。
2.private: Java语言中对访问权限限制的最窄的修饰符,一般称之为“私有的”。被其修饰的类、属性以及方法只能被该类的对象访问,其子类不能访问,更不能允许跨包访问。
3.protect: 介于public 和 private 之间的一种访问修饰符,一般称之为“保护 形”。被其修饰的类,属性以及方法只能被类本身的方法及子类访问,即使子类在不同的包中也可以访问
4.default:即不加任何访问修饰符,通常称为“默认访问模式”。该模式下,只允许在同一个包中进行访问。
图表展示
作用域 | 当前类 | 同包下 | 子孙类 | 其他包 |
---|---|---|---|---|
public | ? | ? | ? | ? |
protect | ? | ? | ? | |
default | ? | ? | ||
private | ? |
那么什么情况该用什么修饰符呢?
从作用域来看,public能够使用所有的情况。 但是大家在工作的时候,又不会真正全部都使用public,那么到底什么情况该用什么修饰符呢?
- 属性通常使用private封装起来
- 方法一般使用public用于被调用
- 会被子类继承的方法,通常使用protected
- package用的不多,一般新手会用package,因为还不知道有修饰符这个东西
再就是作用范围最小原则
简单说,能用private就用private,不行就放大一级,用package,再不行就用protected,最后用public。 这样就能把数据尽量的封装起来,没有必要露出来的,就不用露出来了