Java的访问控制修饰符共有4个,分别是public、protected、default、private。下面咱们分别进行讲解。
ide
private访问控制spa
在本章的前面,咱们已经明白了private访问控制符的做用,若是一个成员方法或成员变量名前使用了private访问控制符,那么这个成员只能在这个类的内部使用。继承
注意:不能在方法体内声明的变量前加private修饰符。ci
缺省访问控制it
若是一个成员方法或成员变量名前没有使用任何访问控制符,咱们就称这个成员是缺省的(default),或是友元的(friendly),或是包类型的(package)。对于缺省访问控制成员,能够被这个包中的其余类访问,若是一个子类与父类位于不一样的包中,子类也不能访问父类中的缺省访问控制成员。table
protected访问控制ast
若是一个成员方法或成员变量名前使用了protected访问控制符,那么这个成员便可以被同一个包中的其余类访问,也能够被不一样包中的子类访问。class
public访问控制变量
若是一个成员方法或成员变量名前使用了public访问控制符,那么这个成员便可以被全部的类访问,无论访问类与被访问类是否在同一个包中。权限
最后,咱们用一张图来总结上述访问控制符的权限。
|
private |
defalut |
protected |
public |
同一类 |
√ |
√ |
√ |
√ |
同一包中的类 |
|
√ |
√ |
√ |
子类 |
|
|
√ |
√ |
其余包中的类 |
|
|
|
√ |
表4.1
4.6.2 类的访问控制
除了类中的成员有访问控制外,类自己也有访问控制,即在定义类的class关键字前加上访问控制符,但类自己只有两种访问控制,即public 和默认,父类不能是private和protected,不然子类没法继承。public修饰的类能被全部的类访问,默认修饰(即class关键字前没有访问控制符)的类,只能被同一包中的全部类访问。
注意:
只要在class以前,没有使用public修饰符,源文件的名称能够是一切合法的名称。带有public 修饰符的类的类名必须与源文件名相同,并且只有一个。