this的HXD“super”關鍵字
this的HXD“super”關鍵字
我們都知道java中的關鍵字this來解決重名的問題,即 this.屬性 或者 this.方法 的方式來處理同名問題,這是我們顯示的使用該關鍵字。那是因為它一直都在屬性或者方法前悄咪咪的待著,只不過不同名時,它不露頭而已。最近,我發現個神奇的關鍵字,它居然和this神似,但是又有所不同,它就是super關鍵字。
一.super的理解(以及super調方法和屬性)
1.super的作用:可以用來區分重寫與重寫後的類
2.super的使用範圍:屬性,方法,構造器
3.使用方式:super.屬性 / 方法 / 構造器
4.super的說明:
第一點:在有子類的類中,通常用super.屬性或者super.方法的方式顯式的呼叫父類中宣告的屬性和方法,但是通常會忽略super和this(好兄弟一起說,嘿嘿)
第二點:特別的,當父子類中定義了同名的屬性時,我們要存子類中呼叫父類中的屬性時,必須使用super.屬性名(表示來自父類的)
第三點:方法和屬性一樣都符合第二點說明的。
如下例子:
父類:
public class hero{
int age;
String name="JACK";
boolean ismale;
public hero(){
}
public hero(String name1, String abi){
System.out.println(name1+"的能力是"+abi);
}
public void achievement(){
System.out.println("我外星人幹掉了");
}
}
子類:
public class superman extends hero {
String wuqi;
String name="TOM";
public superman(){
}
public void achievement(){
System.out.println("我已經幹掉100個外星人了");
}
public void show(String wuqi){
this.wuqi=wuqi;
System.out.println("他的名字是:"+name+"\t"+"我的名字是:"+super.name);
}
}
最後測試:
public class ishero {
public static void main(String[] args) {
superman king=new superman();
king.show("貓和老鼠");
}
}
最後我們發現,結果是:
他的名字是:TOM 我的名字是:JACK
經過回頭檢視可以看出來,加了super哪一個name輸出的名字是父類中的屬性,而不是子類中的。(這是屬性,方法也類似)
二.super呼叫構造器
首先,注意點提前說明:
1.我們可以在子類的構造器中顯示的使用”super(形參列表)“的方式來呼叫父類中宣告的指構造器。
2.super(形參列表)必須使用在首行,否則無效。
3.this和super二者只能同時用一個,一山難容二虎。
4.當我們在未在構造器中用這倆兄弟時候,則系統會預設為super()的形式。
5.在類的多個構造器中,一定有super()的構造器,去呼叫父類中的構造器。
如下例子:
父類:
public class hero{
int age;
String name="JACK";
boolean ismale;
public hero(){
System.out.println("無處不在");
}
public hero(String name1, String abi){
System.out.println(name1+"的能力是"+abi);
}
public void achievement(){
System.out.println("我外星人幹掉了");
}
}
子類:
public class superman extends hero {
String wuqi;
String name="TOM";
public superman(){
}
public void achievement(){
System.out.println("我已經幹掉100個外星人了");
}
測試:
public class ishero {
public static void main(String[] args) {
superman king=new superman();
}
}
結果是:
無處不在
如此可見,雖然我們建立的是superman的物件,但是我們會得到父類構造器中的無處不在,由此可見,superman類中的構造器用了super(),其實,類中的第一空構造器的另一種寫法是:
public superman{
super();
}
相關文章
- super關鍵字
- 21、super關鍵字的用法
- abstract關鍵字 super 關鍵字 類與繼承繼承
- Java進階——super關鍵字Java
- Java™ 教程(使用super關鍵字)Java
- Java中this與super關鍵字Java
- 【尚矽谷-Java學習】5.3 關鍵字 superJava
- OC訊息機制和super關鍵字
- Java開發筆記(四十九)關鍵字super的用法Java筆記
- DM 關鍵字、遮蔽關鍵字
- 你真的瞭解JAVA中物件和類、this、super和static關鍵字嗎Java物件
- out關鍵字和ref關鍵字的區別
- let關鍵字和const關鍵字
- final關鍵字和static關鍵字
- this關鍵字
- 關鍵字
- Java 的 static 關鍵字Java
- static關鍵字的作用
- synchronized關鍵字的原理synchronized
- 4關鍵字
- [JavaScript] this 關鍵字JavaScript
- synchronized 關鍵字synchronized
- Volatile關鍵字
- static關鍵字
- final關鍵字
- const關鍵字
- Voliate關鍵字
- Auto關鍵字
- Swift 關鍵字Swift
- defer關鍵字
- typedef關鍵字
- params關鍵字
- throw關鍵字
- dynamic關鍵字
- volatile 關鍵字
- @Transient關鍵字
- friend關鍵字
- PHP static 關鍵字和 self 關鍵字例項化的區別PHP