写在前面:
访问修饰符之间没有先后顺序,并且访问修饰符修饰的都是成员的属性,不能修饰局部变量。
访问权限
修饰符 | 当前类 | 同一个包 | 子孙类(同一包) | 子孙类(不同包) | 其他包 |
---|---|---|---|---|---|
public | Y | Y | Y | Y | Y |
protected | Y | Y | Y | Y/N | N |
(缺省/friendly) | Y | Y | Y | N | N |
private | Y | N | N | N | N |
详细介绍
修饰符 | 作用 | 使用位置 | 要点 |
---|---|---|---|
public | 对所有类可见 | 类、接口、成员变量、成员方法 | 修饰的外部类必须与文件同名 |
protected | 对同包内和所有子类可见 | 成员变量、成员方法 | 不能修饰外部类 |
(friendly) | 对同包内可见 | 类、接口、成员变量、成员方法 | |
private | 在当前类内可见 | 成员变量、成员方法 | 不能修饰外部类 |
protected详解
- 子类与父类在相同的包中:被声明为protected的变量、方法和构造器能被同包中的任何其他类访问;
- 子类和父类在不同包中:在子类中,子类实例可以访问从父类继承而来的protected方法,而父类实例不能访问到protected方法。