代码块概念:
注意调用时机
好处与使用场景
将构造器的冗余部分提取到代码块 每个构造器执行时都会先执行代码块
静态代码块与普通代码块的区别
注意:创建对象实例时,静态代码块只会被调用一次
例子`
public Class DD{
static{
//打印"DD"
}
{
//打印"new"
}
}
DD d=new DD();
DD d1=new DD();
结果 DD被打印一次而new被打印两次
创建对象时类的调用顺序
示例
执行顺序 aaa父类(Object )->aaa普通代码块-> aaa构造器-> bbb普通代码块->bbb构造器
继承时的代码块初始化顺序
new的时候两个动作(类加载+初始化)
静态代码块和属性(父>子)->(普通代码块和属性->构造器)(父>子)
示例:
父类静态代码块 静态属性
子类静态代码块 静态属性
父类普通方法普通属性
父类构造方法
子类普通方法普通属性(若有多个按定义顺序执行)
父类普通方法普通属性