chp8.三个修饰符
一、static(静态):
1. 概念:static修饰符标示类级别成员。
2. 静态属性(类变量):
I. 全类共有的属性(不属于某个实例对象)。
II. 访问静态属性可以使用 类名.静态属性名。如:Person.sun;
3. 静态方法(类方法):
I. 全类共有的方法(不属于某个实例对象)。
II. 访问静态方法可以使用 类名.静态方法名。
如:System.out.println(); Math.random(); Arrays.sort();
III. 静态方法不能直接访问非静态的属性和方法,(非静态的属性和方法,只能 在创建对象后才存在),如需访问非静态成员,必须先创建对象,再通过对 象引用调用。
IV. 所有引用调用的静态成员,都会转换成类名调用。
Super s = new Sub();
s.staticMethod();//Super.staticMethod();
V. 静态方法可以继承,不能覆盖,没有多态。
4. 静态代码块:
I. 类加载的时候被执行一次,不能手动调用。
II. 类加载(ClassLoader):
a. JVM首次(new对象、调用静态成员时、使用子类时、Class.forName()) 使用到某个类时,通过CLASSPATH查找该类的.class文件。
b. 将类的描述信息(属性、方法)加载到内存中,进行保存。
III. 静态代码块优先加载,可为静态属性赋值,或任何程序需要的初始化行为。
5. 加载类的顺序:
I. 父类静态属性
II. 父类静态代码块(按照书写顺序)
III. 子类静态属性
IV. 子类静态代码块
V. 父类成员属性
VI. 父类动态代码块
VII.父类构造方法
VIII.子类成员属性
IX. 子类动态代码块
X. 子类构造方法
二、abstract(抽象):
1. 修饰类:不能创建对象。
2. 修饰方法:只能有方法声明,不能有方法实现。(必须包含在一个抽象类中)
3. 作用:强制使用多态。
4. 注意:
I. 抽象类中不一定有抽象方法,但有抽象方法的类必须是个抽象类。
II. 子类继承抽象类后,必须实现父类中所有的抽象方法,否则子类还是个抽象 类。
三、final(最终):
1. 修饰类:此类不能被继承。(String、Math、System)
2. 修饰方法:此方法不能被子类覆盖。
3. 修饰变量:此变量值不能改变。(常量)。 USER_NAME
I. 没有默认值,必须手动赋初始值。
II. 只能被赋值一次:
a. 手动初始化。
b. 动态代码块初始化(此变量必须是实例变量)。
b. 构造方法初始化(此变量必须是实例变量)。
c. 静态代码块初始化(此变量必须是静态变量)。
e. 常用public static final公开静态常量。
注意:
I. 基本数据类型—值不可变。引用数据类型—地址不可变。
II. abstractfinal 不可连用。