
三个修饰符一、abstract抽象的1.abstract 修饰类(1) 被 abstract 修饰的类叫抽象类语法abstract class 类名 {}(2) 抽象类编译后生成独立的 .class 文件(3) 抽象类不能直接 new 对象但可以声明引用(4) 抽象类可包含成员变量、普通方法(5) 抽象类有构造方法供子类创建对象时调用2.abstract 修饰方法(1) 被 abstract 修饰的方法叫抽象方法(2) 抽象方法只有声明无实现无 {}语法访问修饰符 abstract 返回值类型 方法名(参数列表);(3) 抽象方法只能在抽象类中抽象类可含抽象 / 普通方法(4) 子类继承抽象类非抽象子类必须重写所有抽象方法否则子类也需定义为抽象类3.抽象类作用强制子类重写方法实现多态二、static静态的1.static 修饰属性静态属性 / 类变量(1) 语法访问修饰符 static 数据类型 属性名;(2) 特点全类共享所有对象共用一份不随对象创建而新增(3) 访问方式推荐 类名。属性名不建议用对象名访问(4) 内存位置方法区非堆内存2.static 修饰方法静态方法 / 类方法(1) 语法访问修饰符 static 返回值类型 方法名(参数列表) {}(2) 访问方式推荐 类名。方法名 ()(3) 核心规则•静态方法只能直接访问静态成员静态属性 / 方法•静态方法不能用 this、super•静态方法可被继承但不能实现多态•非静态方法可访问静态 非静态成员3.static 修饰代码块静态代码块(1) 位置类内、方法外用 static 修饰 {}(2) 执行时机类加载时只执行一次优先于构造方法(3) 作用初始化静态属性、加载配置、注册驱动等(4) 类加载时机首次 new 对象、首次访问静态成员、子类加载触发父类加载4.static 修饰内部类静态内部类不依赖外部类对象三、final最终的、不可变的1.final 修饰变量常量(1) 局部 / 实例 / 静态变量只能赋值一次不可修改(2) final 实例变量无默认值初始化时机声明时、构造方法、动态代码块(3) final 静态变量无默认值初始化时机声明时、静态代码块(4) final 引用地址不可变但对象内部数据可改2.final 修饰方法•可被子类继承但不能重写覆盖3.final 修饰类•不能被继承无子类•常见类String、System、Math