Java父類與子類方法調用順序


 

父類 FatherClass

package 父類與子類方法調用順序;
/**
 * 父類
 * @author shundong
 *
 */
public class FatherClass {
	private int i =0;
	private String name;
	/**
	 * 父類無參構造
	 */
	FatherClass(){
		System.out.println("--父類無參構造--");
	}
	/**
	 * 父類帶參構造
	 * @param name
	 */
	FatherClass(String name){
		this.name=name;
		System.out.println("--父類帶參構造--"+this.name);
	}
	/**
	 * 父類靜態代碼塊
	 */
	static{
		System.out.println("--父類的靜態代碼塊--");
	}
	/**
	 * 父類非靜態代碼塊
	 */
	{
		++i;
		System.out.println("--父類的非靜態代碼塊--"+i);
	}
	/**
	 * 父類的方法
	 */
	public void speak(){
		System.out.println("--父類的方法--");

	}
	//加入一個main程序后
	public static void main(String[] args) {
		System.out.println("--父類主程序--");
		FatherClass father=new FatherClass("父類");
		father.speak();
	}
}

結果:

子類 SonClass

package 父類與子類方法調用順序;
/**
 * 子類
 * @author shundong
 *
 */
public class SonClass extends FatherClass {

	private String name;

	/**
	 * 子類無參構造
	 */
	SonClass(){
		System.out.println("--子類無參構造--");
	}
	/**
	 * 子類帶參構造
	 * @param name
	 */
	SonClass(String name){
		this.name=name;
		System.out.println("--子類帶參構造--"+this.name);
	}
	/**
	 * 子類靜態代碼塊
	 */
	static{
		System.out.println("--子類靜態代碼塊--");
	}
	/**
	 * 子類的非靜態代碼塊
	 */
	{
		System.out.println("--子類的非靜態代碼塊--");
	}
	/**
	 * 重寫父類方法
	 */
	@Override
	public void speak(){
		System.out.println("--子類重寫(Override)了父類的方法--");
	}  
	//然后再加入一個main函數

	public static void main(String[] args) {

		System.out.println("--Main主程序調動--");
		FatherClass father=new FatherClass("父親");
		father.speak();
		SonClass son=new SonClass("兒子");
		son.speak();

	}
}

  

結果

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM