1. 代码块
代码块是用 " { " 和 " } " 包含起来的,括号前可以用static修饰,作用为初始化类和对象。
分类:静态代码块(前有static),非静态代码块
静态代码块:
- 内部可以有输出语句
- 随着类的加载而执行,且只执行一次
- 作用:初始化类的信息
- 静态代码块的执行要优先于非静态代码块
- 静态代码块之中只能调用静态的属性/方法
非静态代码块:
- 内部也可以有输出语句
- 随着对象的创建而执行,且每出现一个对象执行一次
- 作用:可以在创建对象时,对对象的属性进行初始化
- 内部可以调用both静态and非静态属性/方法
代码块的执行顺序:有父及子,静态先行,先代码块,后构造器
而且类的加载是在main方法之前进行的!!
2. final修饰属性时,可以显式初始化、在代码块中初始化、或者在构造方法中初始化。不能用set子赋值,因为final修饰的属性必须要有值,但set子不一定会被调用。构造器是对象诞生前的最后一道关卡。
使用final修饰局部变量,尤其是形参时,表明此形参是一个常量,当我们调用这个方法时,给这个形参赋值,方法内只能使用,不能修改。
static final修饰属性,称为“全局常量”。
(static可以理解为,随着类加载)
3. abstract修饰方法表示抽象方法,抽象方法只有方法的声明,没有方法体。
包含抽象方法的类,一定是抽象类。抽象类中不一定有抽象方法。
若子类重写了父类的所有抽象方法,则这个子类可以实例化。
若没有重写所有抽象方法,则这个子类也是一个抽象类。