最近在看《Java 精粹》,感觉其中有些很好的东西,便随手记录下来,有可能因为理解的原因导致偏差。
Java中有着四种访问权限,如下:
public > protected > package > private
其中,package是在未指定权限修饰符时的权限限制,并非关键字。
1. public
可以修饰方法,类以及接口。
对于被public修饰的方法,类以及接口可以被任何代码访问。
2. protected
可以修饰方法。
在用于修饰类和接口时毫无意义甚至不能通过编译,因为只能被子类使用的类毫无意义。
对于被protected修饰的方法,除了可以被类本身调用,还可以被同一包中的任何代码调用,其次可以被子类调用。
3. package (包权限)
无指定关键字,在不使用修饰符时即为包权限。
可以修饰方法,类以及接口。
对于包权限下的方法,类以及接口,可以被类本身以及同一包内的任何代码调用。
4. private
可以修饰方法。
对于private修饰的方法被类本身调用。
注:
1. 对于类和接口,有意义的权限修饰符实际上只有public和包权限。
Java中有着四种访问权限,如下:
public > protected > package > private
其中,package是在未指定权限修饰符时的权限限制,并非关键字。
1. public
可以修饰方法,类以及接口。
对于被public修饰的方法,类以及接口可以被任何代码访问。
2. protected
可以修饰方法。
在用于修饰类和接口时毫无意义甚至不能通过编译,因为只能被子类使用的类毫无意义。
对于被protected修饰的方法,除了可以被类本身调用,还可以被同一包中的任何代码调用,其次可以被子类调用。
3. package (包权限)
无指定关键字,在不使用修饰符时即为包权限。
可以修饰方法,类以及接口。
对于包权限下的方法,类以及接口,可以被类本身以及同一包内的任何代码调用。
4. private
可以修饰方法。
对于private修饰的方法被类本身调用。
注:
1. 对于类和接口,有意义的权限修饰符实际上只有public和包权限。
2. 对于接口而言,接口内的方法的权限限制符是和接口声明时的权限限制符一致的,即如下代码:
public interface I1 {
void fun1(); // fun1是public权限的
}
interface I2 {
void fun1(); // fun1是包权限的
}