Java 三大修饰符
一、abstract 抽象1. 修饰类抽象类语法abstract class 类名{}编译生成独立 class 文件不能 new 对象仅可声明引用有构造方法供子类创建对象调用可包含普通变量、普通方法、抽象方法2. 修饰方法抽象方法语法abstract 返回值 方法名(参数);无方法体 {}只能存在于抽象类中子类规则非抽象子类必须重写全部抽象方法不重写则子类必须 abstract作用强制多态规范子类行为二、static 静态属于类全局共享1. 修饰变量静态变量 / 类变量所有对象共用一份一处修改全部同步推荐访问类名.变量不推荐对象调用2. 修饰方法静态方法只能直接访问静态成员不能直接访问实例变量 / 普通方法不能使用 this、super可继承仅能被静态方法重写无多态想使用非静态成员new 对象调用3. 代码块普通代码块无 static创建对象时执行初始化实例属性静态代码块类加载时执行仅执行一次初始化静态属性4. 类加载时机首次 new 对象首次调用静态变量 / 静态方法加载子类必先加载父类仅声明引用不会触发类加载5. 修饰内部类静态内部类三、final 最终不可修改1. 修饰变量常量仅能赋值一次赋值后不可修改final 实例变量声明赋值 / 构造器赋值 / 普通代码块赋值final 静态变量声明赋值 / 静态代码块赋值final 引用对象地址不变对象内部属性可改2. 修饰方法可继承禁止子类重写3. 修饰类不能被继承无子类如 String、Math、System核心区分速记abstract约束子类强制重写抽象类不能实例化static归属于类全局一份静态不能访问实例、无 thisfinal锁死不可变变量不能改、方法不能重写、类不能继承