类的初始化过程

 new Zi ( ) ;

1.加载子类和父类到内存中

2.定义变量num;给变量num赋初始值,比如int的是0,string类型的是null等

3.调用子类构造器Zi(),子类构造第一个操作调用父类构造器(默认的super语句)

4.调用父类构造器Fu()

5.父类构造器中调用show()方法,子类重写了父类的方法,会调用子类的

6. 给变量num赋值9;

 

package com.qa.danli;

public class Fu {
	int num=10;
	Fu(){
		//super(); 继承object类
		show();
	}
	{
		System.out.println("FU constructor code ..."+num);
	}
	//子类会覆盖。。。运行子类的
	public void show(){
		System.out.println("hehehe");
	}
}

 

package com.qa.danli;
public class Zi extends Fu{
	int num=9;	
	
	//在没有执行构造器时定义的变量为初始值,只有执行构造器才会赋值
	Zi(){
		//super();
		//显示初始化
		//构造代码块初始化
		System.out.println("zi constructor ...."+num);
	}
	
	{
		System.out.println("ZI constructor code ..."+num);
	}
	
	public void show() {
		System.out.println("zi  show... "+num);
	}
	
	public static void main(String[] args) {
		new Zi();
	}
}

 

你可能感兴趣的:(JAVA面向对象,类的初始化过程)