[Java基础] Java 权限修饰符

2019-09-30  本文已影响0人  LCN233
Alt 'Java 权限修饰符'

作用

用于控制类, 属性, 方法的访问

种类

  1. public
  2. protected
  3. 什么都不加(默认, 有的地方写作 default)
  4. private

修饰的地方

属性 方法 外部类 内部类
public Y Y Y Y
protected Y Y N Y
什么都不加 Y Y Y Y
private Y Y N Y

从上图可知: 4个修饰符都能修饰: 属性, 方法, 内部类。 但是修饰外部类的只能有public什么都不加

可被访问的范围

类的内部调用 子类内部调用 调用类(和父类同包)直接调用 调用类(和父类不同包)直接调用 调用类通过其子类间接调用(和父类同包) 调用类通过其子类间接调用(和父类不同包)
public Y Y Y Y Y Y
protected Y Y Y N Y N
什么都不加 Y Y/N(特殊说明) Y N Y/N(特殊说明) N
private Y N N N N N

上面的几种情况说明一下:

  1. 类的内部调用: 类内部的方法互相调用
  2. 子类内部调用: 子类调用父类的方法
  3. 调用类直接调用: 类 A 调用 类 B 的方法
  4. 调用类通过其子类间接调用: 类 A 是父类, 有方法 fn, 类 B 是 类 A 的子类, 类 C 调用 类 B 的 fn 方法

什么都不加(默认)

  1. 子类内部调用: 当子类和父类不在同一个包下, 无法调用, 但是在同一个包下, 能调用
  2. 调用类通过其子类间接调用(和父类同包): 调用类, 子类, 父类, 都在同一个包路径下, 能够执行成功, 其他的情况, 都会失败

总结

  1. 类内部调用
  2. 子类内部调用
  3. 同一包下, 调用类调用, 即使是隔着子类间接的调用都可以, 只要 调用类和父类维持在统一包路径下
  1. 类内部调用
  2. 子类和父类在同一个包下, 子类能调用
  3. 子类, 父类, 调用类都在同一个包下, 调用类可以通过子类间接调用到

补充

  1. 我们声明接口时, 接口方法 没有修饰符, 默认是 public
  2. 4个修饰符的控制访问 private < 什么都不加 < protected < public, 我们在重写父类的方法的时候, 修饰符必须大于父类的修饰符
上一篇下一篇

猜你喜欢

热点阅读