class Parent
{
//静态代码块儿,随着类的加载而执行,而且只执行一次,用于给类进行初始化
static{
System.out.println("parent static code run-->父类静态代码块儿运行");
}
//构造代码块儿,给所有对象进行初始化,创建一个对象调用一次
{
System.out.println("parent construction code run-->父类构造代码块儿运行");
}
//构造函数,给对象进行针对性地初始化
Parent(){
super();//调用Object的空参数的构造函数,不写也隐示含有super()语句
//成员变量显示初始化,Parent类中没有成员变量,跳过此步
//构造代码块儿初始化
System.out.println("parent constructor run-->父类构造函数运行");
show();//调用Children中的show()方法
}
//被Children中的show()方法覆盖
void show(){
System.out.println("parent show run-->父类show方法运行");
}
}
class Children extends Parent
{
//成员变量
int num=1;
//静态代码块儿,随着类的加载而执行,而且只执行一次,用于给类进行初始化
static{
System.out.println("children static code run-->子类静态代码块儿运行");
}
//构造代码块儿,给所有对象进行初始化,创建一个对象调用一次
{
System.out.println("children construction code run-->子类构造代码块儿运行.......num="+num);
num=2;
}
//构造函数,给对象进行针对性地初始化
Children(){
super();//调用Parent空参数的构造函数,不写也隐示还有super()语句
//成员变量显示初始化,num由0变为1
//构造代码块儿初始化,num由1变为2
System.out.println("children constructor run-->子类构造函数运行.......num="+num);
num=3;//构造函数初始化,num由2变为3
}
//覆盖Parent中的show()方法
void show(){
System.out.println("children show run-->子类show方法运行.......num="+num);
}
}
public class ObjectInstanceProcess
{
public static void main(String[] args){
Children c=new Children();
c.show();
}
}
/*
运行结果:
parent static code run-->父类静态代码块儿运行
children static code run-->子类静态代码块儿运行
parent construction code run-->父类构造代码块儿运行
parent constructor run-->父类构造函数运行
children show run-->子类show方法运行.......num=0
children construction code run-->子类构造代码块儿运行.......num=1
children constructor run-->子类构造函数运行.......num=2
children show run-->子类show方法运行.......num=3
*/
Java中对象的初始化过程
最新推荐文章于 2022-07-27 12:45:59 发布