Java 中三个修饰符及相关概念

abstract(抽象的)

1.修饰类 --> 抽象类

  1. 抽象类 不能创建对象,可以声明引用
  2. 抽象类可以定义属性和方法以及构造方法。
    构造方法是在创建子类对象时使用(创建子类对象 先创建父类对象)

2.修饰方法 --> 抽象方法

  1. 语法:
public abstract 返回值类型 方法名(参数列表);

注意: public abstract 没有先后顺序
  1. 抽象方法只有声明 没有实现,连 { } 都没有
  2. 抽象方法只能定义在抽象类中
  3. 子类必须实现(覆盖)抽象父类中的抽象方法;否则,子类也必须定义为抽象类

抽象类作用
强制使用多态

static(静态的)

1.修饰属性:静态属性、静态变量、类变量

  1. 全类共享的 , 与创建多少个对象无关
  2. 访问方式:对象名.静态属性名;
    类名. 静态属性名; ——> 常用
    2.修饰方法:静态方法
  3. 语法:
public static 返回值类型 方法名(形参列表){
    
      }
  1. 可以直接通过类名访问:类名.方法名(实参);
  2. 静态方法中只能访问静态成员(静态属性、静态方法)
    静态方法中不能访问非静态成员
  3. 非静态方法中可以访问静态成员(静态属性、静态方法)
  4. 静态方法中不能使用this 和 super关键字
  5. 静态方法允许被继承,只允许静态方法覆盖;没有多态。

2.已知静态方法:

Arrays.sort()、Arrays.copyOf()

3.static修饰动态代码块——>静态代码块

  1. 动态代码块

    a. 定义位置 : 类以内,方法外部

    b. 语法:{ }

    c. 在创建对象时,第二步,初始化属性时执行;初始化属性和动态代码块,

     根据定义的先后顺 序,依次执行
    
  2. 静态代码块

    a. 定义位置:类以内,方法外部

    b. 语法:static{ }

    c. 在类加载时执行。根据静态属性和静态代码块的定义的先后顺序,依次执行

类加载

当JVM 第一次使用一个类时,会通过classpath(类路径)找到对应的.class文件,将此类的所有信息(包名、类名、属性、构造方法…)加载并且保存在内存中。这个过程称之为类加载。类加载只进行一次

类加载时机

  1. 第一次访问静态属性、调用静态方法 时
  2. 第一次创建对象时
  3. 创建子类对象时:
    先进行父类类加载,再进行子类类加载
    先构建父类对象,再构建子类对象
  4. Class.forName(类的全限定名);

4.修饰成员内部类 ——> 静态内部类

final(最终的)

1.修饰变量
被final修饰的变量,一旦赋值不可改变;称之为作用范围内的常量

修饰属性

  1. 被final修饰的属性没有默认值
    赋值时机:显示初始化、动态代码块、构造方法,只能选其一
    注意: 通过构造方法赋值时,一定要保证每一个构造方法,能有效的赋值

  2. 被static和final修饰的属性称之为静态变量
    静态常量赋值时机:显示初始化,静态代码

  3. 被final修饰的基本数据类型,值不可更改
    被final修饰的引用数据类型,地址不可更改

2.修饰类 --> 断子绝孙类
不可被继承
String,Math,System被final修饰

3.修饰方法
不可被覆盖

总结

哪些修饰符可以修饰类public,[default],abstract,final
哪些修饰符可以修饰方法private,[default],protected、public,abstract、static、final
哪些可以修饰属性private、[default]、protected、public,static、final

哪些修饰符不可以连用
privateabstract 不可以连用
staticabstract 不可以连用
finalabstract 不可以连用

猜你喜欢

转载自blog.csdn.net/gym02/article/details/107060709