java類的實例化順序以及屬性和構造方法的繼承

先說結果

  • 1. 父類靜態成員和靜態初始化塊 ,按在代碼中出現的順序依次執行
  • 2. 子類靜態成員和靜態初始化塊 ,按在代碼中出現的順序依次執行
  • 3. 父類實例成員和實例初始化塊 ,按在代碼中出現的順序依次執行
  • 4. 父類構造方法
  • 5. 子類實例成員和實例初始化塊 ,按在代碼中出現的順序依次執行
  • 6. 子類構造方法

一個例子:

public class fa {
	
	fa(){
		print();
		
	}
	
	void print(){
		int main =3;
		System.out.println("this is 3 "+main);
		
	}

}
public class test extends fa{
	private String main ="12312";
	test(){
		print();
		
	}
	
	void print(){
		
		System.out.println("this is 3 "+main);
		
	}

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		new test();

	}

}

 結果如下

先執行父類構造方法,其中的print方法中的main爲空之後執行子類實例成員和實例初始化塊 ,main賦值最後執行子類構造方法

構造方法的繼承

1、子類的構造過程中必須調用其基類的構造方法。

2、子類可以在自己的構造方法中使用super(argument_list)調用基類的構造方法。

    2.1、使用this(argument_list)調用本類的另外構造方法。

    2.2、如果調用super,必須寫在子類構造方法的第一行。

3、如果子類的構造方法中沒有顯示的調用基類的構造方法,則系統默認調用基類的無參數構造方法

4、如果子類構造方法中既沒有顯示調用基類構造方法,而基類又沒有無參數的構造方法,則編譯出錯。

屬性的繼承

  1. 父類子類有相同屬性時,是在父類基礎上添加而非覆蓋。
  2. 方法和屬性調用時,是從當前類開始一直向上查找。找到就停止。
  3. 調用的是誰的方法,查找的起點就是誰。所以,準確判斷是哪個類的方法很重要。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章