class Test4
{
public static void main(String[] args)
{
Test4 d1=new Test4(10);
Test4 d2=new Test4();
}
Test4(){
System.out.println("构造函数");
}
Test4(int i){
System.out.println("有参构造函数");
}
/**
构造代码块也是一种初始化方式,
作用:给对象进行初始化。
对象一建立就运行,而且优先于构造函数执行。
和构造函数的区别:
构造代码块是给所有对象进行统一初始化,无论创建哪个对象时都得首先执行构造代码块,然后再执行对应的构造函数
而构造函数是给对应的对象初始化。
构造代码快中定义的是不同对象共性的初始化内容。比如每个构造函数里都有cry()方法,,,可以单独提取出来放到构造代码块里
*/
{
System.out.println("构造代码块");
}
}
d1,d2都能运行.当建立这个new Test4(10);对象的时候时先执行构造代码块,再执行Test4(int i)有参构造函数,之后建立new Test4()对象的时候,这个对象就到Test4()构造函数来初始化,步骤也是先执行构造代码块再执行Test4()构造函数,,,构造函数是给不同的对象进行分别初始化的,无论创建哪个对象都得首先执行构造代码块
结论:先执行构造代码块再执行构造函数,无论调用哪个构造函数都得先执行构造代码块
|