超級關鍵字使用示例
super 關鍵字在三個地方扮演重要角色
- 建構函式級別
- 方法級別
- 可變等級
建構函式級別
super
關鍵字用於呼叫父類建構函式。此建構函式可以是預設建構函式或引數化建構函式。
-
預設建構函式:
super();
-
引數化建構函式:
super(int no, double amount, String name);
class Parentclass { Parentclass(){ System.out.println("Constructor of Superclass"); } } class Subclass extends Parentclass { Subclass(){ /* Compile adds super() here at the first line * of this constructor implicitly */ System.out.println("Constructor of Subclass"); } Subclass(int n1){ /* Compile adds super() here at the first line * of this constructor implicitly */ System.out.println("Constructor with arg"); } void display(){ System.out.println("Hello"); } public static void main(String args[]){ // Creating object using default constructor Subclass obj= new Subclass(); //Calling sub class method obj.display(); //Creating object 2 using arg constructor Subclass obj2= new Subclass(10); obj2.display(); } }
注意 :super()
必須是建構函式中的第一個語句,否則我們將得到編譯錯誤訊息。
方法級別
super
關鍵字也可以在方法重寫的情況下使用。super
關鍵字可用於呼叫或呼叫父類方法。
class Parentclass
{
//Overridden method
void display(){
System.out.println("Parent class method");
}
}
class Subclass extends Parentclass
{
//Overriding method
void display(){
System.out.println("Child class method");
}
void printMsg(){
//This would call Overriding method
display();
//This would call Overridden method
super.display();
}
public static void main(String args[]){
Subclass obj= new Subclass();
obj.printMsg();
}
}
注意 :如果沒有方法重寫,那麼我們不需要使用 super
關鍵字來呼叫父類方法。
可變等級
super
用於引用直接父類例項變數。在繼承的情況下,可能有基類和派生類可能有類似的資料成員。為了區分基類/父類和派生/子類的資料成員,在派生類的上下文中基類資料成員必須以 super
關鍵字開頭。
//Parent class or Superclass
class Parentclass
{
int num=100;
}
//Child class or subclass
class Subclass extends Parentclass
{
/* I am declaring the same variable
* num in child class too.
*/
int num=110;
void printNumber(){
System.out.println(num); //It will print value 110
System.out.println(super.num); //It will print value 100
}
public static void main(String args[]){
Subclass obj= new Subclass();
obj.printNumber();
}
}
注意 :如果我們不在基類資料成員名稱之前寫入 super
關鍵字,那麼它將被稱為當前類資料成員,而基類資料成員將隱藏在派生類的上下文中。