Java初学者在刚接触修成员变量饰符时,很容易将这些概念混淆,下面是我整理的四类修饰符的访问权限
自身 | 同包子类 | 不同包子类 | 同包类 | 其他类 | |
private | 访问 | 不可继承 | 不可继承 | 不可访问 | 不可访问 |
package | 访问 | 继承 | 不可继承 | 访问 | 不可访问 |
protected | 访问 | 继承 | 继承 | 访问 | 不可访问 |
public | 访问 | 继承 | 继承 | 访问 | 访问 |
其中package是无修饰符时默认的,等效于friendly/default
一般情况下,当我们定义类的属性时,用private保证封装性;
定义被调用的方法时用public;
会被子类继承的方法用protected;
package则很少会用到。
还有一个很重要的原则是保证作用域最小,即能采用最小范围的修饰符就用最小的,实在不行就扩大一级,这样可以把数据尽量封装起来,保证封装性。