天天看點

黑馬程式員_super 關鍵字

----------- android教育訓練、java教育訓練、java學習型技術部落格、期待與您交流! ------------

super 關鍵字

super 關鍵字的中文意思是超級的,使用 super 關鍵字可以在子類中引用父類中的

内容。主要的使用形式有以下幾種:

在子類的構造方法内部引用父類的構造方法

在子類中調用父類中的成員方法

在子類中調用父類中的成員變量

(1)引用父類構造方法

在構造子類對象時,必須調用父類的構造方法。而為了友善代碼的編寫,在子類的

構造方法内部會自動調用父類中預設的構造方法。但是如果父類中沒有預設的構造方法時,

則必須手動進行調用。

使用 super 可以在子類的構造方法内部調用父類的構造方法。可以在子類的構造方法内部根據需要調用父類中的構造方法。

使用 super 關鍵字調用父類構造方法的示例代碼如下:

//檔案名:SuperClass.java

public class SuperClass {

public SuperClass(){}

public SuperClass(int a){}

}

//檔案名:SubClass.java

public class SubClass extends SuperClass {

public SubClass(){

super(); //可省略

}

public SubClass(int a){

super(a);

}

public SubClass(String s){

super(); //可省略

}

}

在該示例代碼中,SubClass 繼承 SuperClass 類,在 SubClass 類的構造方法内部可以使用super 關鍵字調用父類 SuperClass 的構造方法,具體調用哪個構造方法沒有限制,可以在子類内部根據需要進行調用,隻是根據調用的構造方法不同傳入适當的參數即可。

由于 SubClass 類的父類 SuperClass 内部有預設的構造方法,是以 SubClass 的構造方法内部super()的代碼可以省略。

和使用 this 關鍵字調用構造方法一樣,super 調用構造方法的代碼隻能出現在子類構造方法中的第一行可執行代碼。這樣 super 調用構造方法的代碼在子類的構造方法内部則最多出現一句,且不能和 this 調用構造方法的代碼一起使用。

(2)引用父類成員方法

在子類中繼承了父類中的成員方法,一般可以直接通過方法名使用,但是如果在子

類中覆寫了父類的成員方法以後,如果需要在子類内部調用父類中被覆寫的成員方法時則不能直接調用了,這樣就又需要使用 super 關鍵字了。

示例代碼如下:

//檔案名:SuperClass2.java

public class SuperClass2 {

public void test(){}

public void print(int a){

System.out.println("SuperClass2: " + a);

}

}

//檔案名:SubClass2

public class SubClass2 extends SuperClass2 {

public void print(int a){

super.print(a);

System.out.println("SubClass2");

}

public void t(){

super.test(); //super 可省略

super.print(0); //不可省略

}

}

(3)引用父類成員變量

在子類中如果引用父類的成員變量,也可以使用“super.成員變量”來引用,隻是

一般成員變量的覆寫是沒有意義的,是以這個時候都可以直接使用成員變量名進行引用,是以這裡的 super 都可以省略。 ----------- android教育訓練、java教育訓練、java學習型技術部落格、期待與您交流! ------------