访问控制修饰符用于控制被修饰变量、方法、类的可见范围。访问控制修饰符有三个:public/private/protected。当没有任何访问权限修饰符修饰时,我们就访问权限是“default”
下图是在不同情况下各种权限修饰符的作用范围:
总结:
1、在不同包下面能够访问的权限修饰符只有: pulbic 与protected,但是 protected 必须要有继承的关系才能够访问。
2、成员变量和成员方法可以处于4个访问级别中的一个:公开、受保护、默认或私有。
3、存在继承关系时,父类不可以是 private,因为子类无法继承。
4、顶层类可以处于公开或默认级别,顶层类不能被 protected 和 private 修饰。
5、局部变量不能被访问控制修饰符修饰。
6、接口只能是public或默认级别。
7、枚举的构造方法不能使用public修饰,只能是default 或者private;
注:怎么算同一个包?
package cn.pangcloud.annotation;
interface Inteface1 {
}
package cn.pangcloud.annotation.x;
public interface SubInterface1 extends Inteface1 {
}
虽然都在cn.pangcloud.annotation下,此种情况报错Inteface1 cannot be resolved to a type
因此都在两个类同一个包下面不包括其中一个类在子包的情况!!
比如classA在dir1/dir2/dir3下,而classB在dir1/dir2下,虽然都是dir2下,但是不是同一个包。
判断是否在同一个包下最好的方法是查看源文件package关键字后面跟的包名是否完全一致。