4.11 super關鍵詞 -【Java入門--瘋狂Java講義】

上一更新中,我們提到了在子類中可以重寫父類的方法,重寫後,子類的對象不能調用父類的此方法,但是可以在子類中調用,那麼調用的時候就需要使用super關鍵詞。

super關鍵詞只可以用在有繼承關係的子類中,有兩個作用:調用父類的方法、調用父類的構造器。

首先看調用父類的方法:

class Bird{
	public void fly(){
		System.out.println("父類的fly方法");
	}
}

class Ostrich extends Bird{
	public void fly(){
		super.fly();//調用父類的fly方法
		System.out.println("子類的fly方法");
	}
}

class LittleBird extends Bird{}
	
public class Test05 {
	public static void main(String[] args) {
		Ostrich ostrich = new Ostrich();
		ostrich.fly();
		//父類的fly方法
		//子類的fly方法
	}
}

那麼怎麼調用父類的構造器呢?

class Bird{
	public Bird(){
		System.out.println("父類的fly構造方法");
	}
	public Bird(String name){
		System.out.println("父類的fly構造方法"+name);
	}
}

class Ostrich extends Bird{
	public Ostrich(){
		super("test");
		System.out.println("子類的fly構造方法");
	}
}

class LittleBird extends Bird{}
	
public class Test05 {
	public static void main(String[] args) {
		Ostrich ostrich = new Ostrich();
		//父類的fly構造方法test
		//子類的fly構造方法
	}
}

 語法很簡單,有一些注意點:

super關鍵詞不能出現在static修飾的方法中;

無法訪問到父類的私有內容;

super調用父類構造器必須在第一行;

如果有顯示的調用父類的構造器的,則顯示調用,否則系統會默認調用無參的構造器,如果父類沒有午餐構造器,則會報編譯錯誤,需要顯示的調用父類的構造器,而且,父類的構造器的調用是上朔的,一直上朔到Java.lang.Object。

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章