1. 程式人生 > >java繼承中super關鍵字的用法

java繼承中super關鍵字的用法

今晚複習了下java繼承類super關鍵字的用法,看了一個例題,看似簡單其實特別容易錯,筆試題經常出現這種型別的題,下面來分享下此類題:

package study;
class Base{
	public String name;
	public Base(){
		name="jack";
	}
	public Base(String pName){
		name=pName;
	}
	public void Sample(){
		System.out.println(name);
	}
}
class Children extends Base{
	public Children(){
		super("child1");//
		name="child2";
	}
}
public class Method {
	public static void main(String[] args) {
		Children c=new Children();
		c.Sample();
	}
}

大家猜猜輸出結果是什麼?不信你先寫出答案,再動手上機操作下,估計很多初學者都會做錯。我當時也是百思不得其解,後面看到super關鍵字的用法才恍然大悟:

在Java中,super關鍵字有兩個主要用途;
第一種用途是:在子類的構造方法中,super關鍵字可以顯式地呼叫父類的構造方法,用於將引數傳遞給它;
其一般語法是:
super(實際引數);
需要注意的是:該語句必須是子類構造方法的第一條語句。

如果父類和子類中有同名成員,在子類中預設訪問是屬於自己的那一個成員;
super關鍵字可以明確地指定要訪問父類中的成員;
其一般語法是:
super.成員名;
前提條件是:父類中的該成員不是private的。

看到這裡,我想大家應該知道輸出結果了吧!(child2)