Java 三大修饰符 abstract / static / final 速记笔记

Java 三大修饰符 abstract / static / final 速记笔记 Java 三大修饰符 abstract / static / final 速记笔记这篇博客帮你把三个核心修饰符的用法整理得清清楚楚考试复习、日常查阅都能用~一、abstract抽象的用来定义抽象类和抽象方法核心作用是强制子类实现多态。1. 修饰类抽象类- 语法 abstract class 类名 {}- 特点- 编译后会生成独立的 .class 文件- 不能直接 new 创建对象但可以声明引用- 可以定义成员变量、成员方法、构造方法供子类创建对象时调用- 既可以包含抽象方法也可以包含非抽象方法2. 修饰方法抽象方法- 语法 访问修饰符 abstract 返回值类型 方法名(形参列表); 注意没有方法体连 {} 都没有- 特点- 只能定义在抽象类中- 子类继承抽象类后如果不想自己成为抽象类就必须重写所有抽象方法否则子类也得声明为抽象类- 访问修饰符和 abstract 没有先后顺序要求二、static静态的用来修饰属性、方法、代码块和内部类核心特点是属于类而不是对象。1. 修饰属性静态变量/类变量- 语法 访问修饰符 static 数据类型 属性名;- 特点- 属于整个类所有对象共享同一份数据和创建多少个对象无关- 访问方式推荐用类名访问- 推荐 类名.静态属性名- 不推荐 对象名.静态属性名2. 修饰方法静态方法- 语法 访问修饰符 static 返回值类型 方法名(形参列表) { 方法实现 }- 特点- 访问方式 类名.静态方法名(实参) 推荐- 静态方法的访问限制- 只能直接访问本类的静态成员静态属性、静态方法- 不能直接访问非静态成员也不能使用 this / super 关键字- 可以被子类继承但只能被静态方法覆盖没有多态效果3. 修饰初始化代码块- 动态代码块无 static 创建对象时执行按属性定义顺序初始化属性- 静态代码块带 static 类加载时执行按静态属性定义顺序初始化静态属性- 补充类加载的触发时机1. 第一次创建该类的对象2. 第一次使用该类的静态成员3. 子类类加载时会先触发父类的类加载三、final最终的、最后的用来修饰变量、方法、类核心特点是不可修改。1. 修饰变量常量- 局部变量、实例变量、静态变量都可以被修饰- 特点- 只能赋值一次赋值后不可修改- 实例变量被 final 修饰时不会分配默认值必须手动初始化声明时、构造方法中、动态代码块都可以- 静态变量被 final 修饰时也不会分配默认值初始化时机为声明时或静态代码块中- 修饰引用时引用的地址不可修改但对象内部的数据可以修改2. 修饰方法- 可以被子类继承但不允许被子类重写3. 修饰类- 被 final 修饰的类不能被继承没有子类- 常见例子 String 、 System 、 Math 等小补充三个修饰符的组合注意事项1. abstract 和 final 不能同时修饰类 abstract 要求被继承 final 禁止被继承冲突2. abstract 和 static 不能同时修饰方法 abstract 方法需要被子类重写 static 方法不能被重写3. abstract 和 private 不能同时修饰方法 abstract 方法需要被子类实现 private 方法对子类不可见