访问控制符用来判断其他类是否可以使用特定的字段或者方法,有两个层面的访问控制符:
- 类级别-public和包级别的(包级别是包私有的,package-private,是默认的,不用指定)
- 成员级别-public、protected、default(package-private,是默认的,不用指定)、private
其中,protected只能被本包和其他包中的子类访问。
注意:对于父类中的protected成员,子类可以继承到父类的该成员,而不是可以调用父类对象的该成员:
package c2;
public class Class2 {
protected String t1;
}
package c1;
import c2.Class2;
public class Class1 extends Class2 {
public static void main(String[] args) {
Class2 c2 = new Class2();
Class1 c1 = new Class1();
System.out.println(c2.t1); // 错误,'t1' has protected access in 'c2.Class2'
System.out.println(c1.t1);
}
}
| 控制符 | private | default | protected | public |
| class | √ | √ | √ | √ |
| package | × | √ | √ | √ |
| subclass | × | × | √ | √ |
| world | × | × | × | √ |
访问控制符在两方面产生影响:
- 访问控制符决定了外部类中的哪些成员可以访问
- 当你写一个类时,你需要考虑和规划每个成员的访问范围
访问控制符只是在编辑的层面进行控制,而无法在运行时控制,例如可以通过反射来获取、改变任何修饰符修饰的成员。
引用自:https://docs.oracle.com/javase/tutorial/java/javaOO/accesscontrol.html
2018-06-12
浙公网安备 33010602011771号