美文网首页
[Java基础] Java 权限修饰符

[Java基础] Java 权限修饰符

作者: LCN233 | 来源:发表于2019-09-30 18:07 被阅读0次
    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. 调用类通过其子类间接调用(和父类同包): 调用类, 子类, 父类, 都在同一个包路径下, 能够执行成功, 其他的情况, 都会失败

    总结

    • public
      public 强调的是共有的, 所以在所有的地方都能调用

    • protected
      protected 强调的是同一个包和子类, 所以他可以在

    1. 类内部调用
    2. 子类内部调用
    3. 同一包下, 调用类调用, 即使是隔着子类间接的调用都可以, 只要 调用类和父类维持在统一包路径下
    • 什么都不加(default)
      default 强调的是同一个包, 所以他可以在
    1. 类内部调用
    2. 子类和父类在同一个包下, 子类能调用
    3. 子类, 父类, 调用类都在同一个包下, 调用类可以通过子类间接调用到
    • private
      private 强调的是私有的, 所以只能在类的内部调用

    补充

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

    相关文章

      网友评论

          本文标题:[Java基础] Java 权限修饰符

          本文链接:https://www.haomeiwen.com/subject/gtjhpctx.html