Java的访问修饰符以及其访问权限是让我们比较纠结的一个问题,本来如果只是简单的private、protected和public三者的访问权限是比较简单的。可是Java中的包访问权限和这三者搅在一起就很容易让人糊涂。下面是一个关于访问权限的总结。
| 本类 | 同包子类 | 同包非子类 | 非同包子类 | 非同包非子类 |
public | √ | √ | √ | √ | √ |
protected | √ | √ | √ | √ |
|
默认 | √ | √ | √ |
|
|
private | √ |
|
|
|
|
public:所有类皆可访问;
protected:该类及其子类成员,同一包类皆可访问;
默认:同一包下皆可访问;
private:除本类外皆不可访问(包访问权限);
所以访问权限从大到小为:public、protected、默认、private.
这里需要注意的是,除继承关系外,想直接调用另一个类的方法是不可以的,需先建立该类的对象才可以访问。且不同包的访问需导包。