JAVA基础-修饰符与关键字

 

 

访问修饰符
  1. public
    1.0 可修饰:类/接口/方法/变量
    1.1 访问范围:任意包任意类
  2. protected
    2.0 可修饰:方法/变量+内部类
    2.1 访问范围:同包内皆可访问+子类继承自基类的方法和变量(不同包)
  3. default可不写
    3.0 可修饰:类/接口/方法/变量
    3.1 访问范围:同包内皆可访问
  4. private
    4.0 可修饰:方法/变量
    4.1 访问范围:当前类
  严格程度:从上至下递增(其他包-不同包子孙类-同包子孙类-同包-当前类)
非访问修饰符
  1. static
    1.0 可修饰:方法/变量,变成 类方法/类变量
    1.1 特点:
      1.10 将方法和变量变为类共享,属于类所有该类实例共享,不单独属于实例,在内存上只存在一份拷贝。
      1.11 可以直接通过 类名.方法名/类名.变量名访问属性
      1.12 类方法内不能有this. 和 super.关键字引用;当静态方法引用外部变量和方法时,被引用的方法和变量必须是static类型的或者通过了 obj.非static变量和方法的方式去引用,否则编译不通过。

      如下11行和13行会报错,10,12,14,15不会报错。

    

       1.13  静态方法内只能访问静态成员,但是可以定义非静态变量。

    1.2 应用:使得方法和属性具有该类实例共享的特性,
  2. final
    2.0 可修饰:类/方法/变量
    2.1 final类:不能被继承/无子类(最后即绝后)
    2.2 final方法:不能被重写,可以重载。
      2.20 目的:防止方法被修改
      2.21 重写:子类重写父类方法,方法名一样,输入和输出一样,方法内部实现不一样。
      2.22 重载:同一个类中,方法名一样,输入一定不一样,输出无限制。
    2.3 final变量:不能重新赋值,必须显式初始化。static+final常用语定义类常量
  3. abstract
    3.1 可修饰:类/方法/
    3.2 修饰类:
      3.20 抽象类,抽象类不一定有抽象方法,抽象方法一定在抽象类中
      3.21 目的:用于将来进行类扩充,与final是互斥的不能同时存在。
    3.3 修饰方法:
      3.30 抽象方法不带方法体如 abstract void test();
      3.31 非抽象子类必须实现抽象父类的所有抽象方法
  4. transient
    4.1 作用:修饰不需要序列化的成员变量(实例变量)
  应用于线程编程
  5. volatile
    5.1 作用:保证成员变量/类变量,被多个线程操作时,对所有线程是立即可见的,即在多个线程间值都是一样的。
  6. synchronized
    6.1 可修饰:类/方法/代码块
    6.2 特点:同一个时间点只能被一个线程访问

常见关键字
  this
    1. 含义:当前对象的引用
    2. 应用场景:
      2.0 方法内,局部变量和成员变量重名时:this.name=name
      2.1 构造方法中调用当前类的其他构造方法:this(参数)
  super
    1. 含义:当前对象的所属类的父类实例的引用
    2. 应用场景:
      2.0 子类中访问父类的属性:super.field
      2.1 子类中调用父类的方法:super.method()
      2.1 子类构造方法调用父类构造方法:super(参数)

posted on 2020-12-17 14:10  挣扎的发际线  阅读(120)  评论(0编辑  收藏  举报

导航