修饰词 | 类 | 变量/方法 |
public | 包内外的类都可以访问 | 包内外的类都可以访问 |
private | 类不可以声明为private | 只允许本类访问 |
protected | 类不可以声明为protected | 本包内的类和子类可以访问 |
default 默认 | 本包中的类可以访问 | 本包中的类可以访问(子类不可以) |
其实说的已经很详细了但是还有一点可能弄混那就是:
默认不写的时候 子类不能访问 但为啥我子类还能调用父类的变量 是因为当前子类在本包中
给大家测试个例子就清楚了
首先这是我创建的包结构 2个包 一个test1 一个test2 还有一个父类 person 和2个子类Son1 Son2
随便在父类创建了一个int 类型的变量 a 随便写了一个方法 work()
接下来看 和父类在一个包的子类 Son1 不会报错
父类的 a变量没有写修饰词默认为default 子类不能使用 但是因为子类和父类在同一个包 所以也可以访问
在看不在一个包的 Son2 就会报错
然后 把父类的 a变量 改为 protected protected 访问权限 是包和子类 这样Son2 就不会报错了