
一、abstract 抽象修饰符1. 修饰类抽象类1. 语法abstract class 类名{}编译后仍生成独立.class文件。2. 无法直接实例化对象但可声明引用。3. 可包含普通成员变量、成员方法也拥有构造方法供子类实例化时调用。2. 修饰方法抽象方法1. 语法abstract 返回值 方法名(参数);只有声明、无方法体。2. 抽象方法必须定义在抽象类中抽象类可同时包含抽象方法与普通方法。3. 继承规则子类若不为抽象类必须重写父类所有抽象方法否则子类也需用abstract修饰。3. 核心作用强制代码使用多态特性。二、static 静态修饰符1. 修饰属性静态变量/类变量1. 属于整个类被所有对象共享和实例对象数量无关。2. 推荐使用类名.静态变量调用不建议通过对象调用。3. 内存位置存放在方法区区别于堆内存的实例变量。2. 修饰方法静态方法1. 调用方式优先类名.静态方法()。2. 访问规则静态方法只能直接访问静态成员不能直接访问非静态成员非静态方法可随意访问静态/非静态成员。3. 限制静态方法中不能使用this、super可被继承无法实现多态。4. 补充若要在静态方法中使用非静态成员可手动创建对象调用。3. 修饰代码块静态代码块1. 执行时机类加载时执行一个类仅执行一次用于初始化静态属性。2. 类加载触发场景首次创建类对象、首次调用类静态成员、子类加载会优先加载父类。3. 执行顺序父类静态内容 → 子类静态内容 → 父类动态代码块构造方法 → 子类动态代码块构造方法。4. 拓展可修饰内部类静态内部类。三、final 最终修饰符1. 修饰变量常量1. 被修饰变量仅能赋值一次赋值后不可修改。2. final实例变量无默认值可在声明处、构造方法、动态代码块中完成初始化。3. final静态变量无默认值可在声明处、静态代码块中完成初始化。4. 修饰引用类型对象地址不可修改对象内部属性仍可修改。2. 修饰方法方法可被子类继承但禁止子类重写。3. 修饰类类无法被继承没有子类。常见示例String、System、Math。