super關鍵字的使用

1.任務描述

使用super調用父類中的方法和屬性。

2.技能要點

 掌握super關鍵字的使用方法。

3.任務實現過程

源文件:Card.java

public class Card {
private String name;
private String sex;
private String tele ;
public Card(String theName){
this.name = theName;
}
public Card(){}
public String showName() {
return name;
}
//其他代碼

}

在這個例子中,將Card類中的屬性都是private的,通過各自的public的方法來存取。

源文件:friendCard.java

public class friendCard extends Card{
String address;
public friendCard(String friendName){
super(friendName);
}

public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public String showFriendName(){
return “My Friend “+ super.showName();
}
}

在子類friendCard中,如果使用下面的代碼段所示直接返回父類中的屬性name:

return “My Friend “+ super.name;

在編譯的時候,將會因爲訪問權限問題而出錯,將會出現下面的錯誤:

friendCard.java:17: name has private access in Card
return “My Friend “+ super.name;
1 error

這個時候,可以在showFriendName()方法中調用被覆蓋方法,得到需要的“name”屬性的值:

public String showFriendName(){
return “My Friend “+ super.showName();
}

這樣就解決了訪問權限的問題,也清晰地指明瞭在這個覆蓋方法中調用的showName()方法是父類中的方法。

注意:

如果不使用super指明此處調用的showName()方法的出處,系統依然會自動調用父類中的showName()方法。但是當子類中有同名方法覆蓋父類方法時,系統將會當做是子類自身的方法,當運行此程序時,將會遞歸地調用方法本身,引起程序錯誤。爲避免混淆,super關鍵字不要默認。

發佈了4 篇原創文章 · 獲贊 3 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章