this:
this理解為:當前對象 或 當前正在創建的對象
可以調用的結構:屬性、方法;構造器
this調用屬性、方法:
先了解一下形參:
形參的意義就是給屬性賦值,我們是要給同名的屬性賦值,這時候我們就把形參名和屬性的名字寫成一樣,這樣我們就知道我們傳入的形參就是要給我們同名的屬性去賦值的.
在類的方法中,我們可以使用"this.屬性"或"this.方法"的方式,調用當前對象屬性或方法。但是,
通常情況下,我們都擇省略"this."。特殊情況下,如果方法的形參和類的屬性同名時,我們必須顯式的使用"this.變量"的方式,表明此變量是屬性,而非形參。
舉例:我們聲明一個類叫鞋類,給它提供私有的屬性和get/set方法和構造器:
先來看沒有加this關鍵字的情況:
結果:
然后我們給鞋屬性加上this關鍵字:
控制臺輸出的就是我們給鞋設置的名字和編號:
在類的構造器中,我們可以使用"this.屬性"或"this.方法"的方式,調用當前正在創建的對象屬性或方法。但是,通常情況下,我們都擇省略"this."。特殊情況下,如果構造器的形參和類的屬性同名時,我們必須顯式的使用"this.變量"的方式,表明此變量是屬性,而非形參。
同樣的我們的構造器也是一樣:如果有參構造器沒有加給屬性加this關鍵字:控制臺輸出結果也和上面一樣
加上之后:
"this.方法"舉例:我們聲明兩個方法show和sale方法來舉例體會一下this的作用:代碼參照上面:
s.show();的結果:
this調用構造器:
① 我們在類的構造器中,可以顯式的使用"this(形參列表)"方式,調用本類中指定的其他構造器
② 構造器中不能通過"this(形參列表)“方式調用自己
③ 如果一個類中有n個構造器,則最多有 n - 1構造器中使用了"this(形參列表)”
④ 規定:"this(形參列表)“必須聲明在當前構造器的首行
⑤ 構造器內部,最多只能聲明一個"this(形參列表)”,用來調用其他的構造器
舉例:我們還是寫一個shoes類 提供私有屬性和get/set方法并提供三個構造器:
運行結果:
super:
super 關鍵字可以理解為:父類的
可以用來調用的結構:
屬性、方法、構造器
super調用屬性、方法:
我們可以在子類的方法或構造器中。通過使用"super.屬性"或"super.方法"的方式,顯式的調用父類中聲明的屬性或方法。但是,通常情況下,我們習慣省略"super."
①特殊情況:當子類和父類中定義了同名的屬性時,我們要想在子類中調用父類中聲明的屬性,則必須顯式的使用"super.屬性"的方式,表明調用的是父類中聲明的屬性。
② 特殊情況:當子類重寫了父類中的方法以后,我們想在子類的方法中調用父類中被重寫的方法時,則必須顯式的使用"super.方法"的方式,表明調用的是父類中被重寫的方法(也就是父類中原本的方法)。
舉例兩種特殊情況:在子類的方法中調用父類中同名的屬性和方法:
創建一個人類,一個學生類,學生類繼承人類,和一個測試類
輸出結果:
super調用構造器:
我們可以在子類的構造器中顯式的使用"super(形參列表)"的方式,調用父類中聲明的指定的構造器
注意:
"super(形參列表)"的使用,必須聲明在子類構造器的首行!我們在類的構造器中,針對于"this(形參列表)"或"super(形參列表)"只能二者取其一,不能同時出現在構造器的首行,沒顯式的聲明"this(形參列表)“或"super(形參列表)”,則默認調用的是父類中空參的構造器:super()在類的多個構造器中,至少一個類的構造器中使用了"super(形參列表)",調用父類中的構造器
舉例:還是用上面的例子,我們在人類和學生類中添加構造器:
在子類構造器2中調用父類已有的有參構造器:
然后測試:實例化學生類的對象并給屬性賦值,調learn方法:
輸出結果:
this與super的區別總結:
①代表事物不同
? this表示當前所屬函數的調用者對象
? super表示調用父類的結構(屬性,方法,構造器)
②使用前提不同
? super必須要有繼承關系才能使用
? this不需要繼承關系也能使用
③調用的構造器不同
? super:調用父類的構造器
? this:調用當前類(本類)的構造器
說明:
在棧空間中存放的是對象的引用也就是對象名指向堆空間中new的對象,在堆空間中子類和父類的屬性都會有,this和super都可以通過棧空間的引用指向堆空間來調用具體的屬性.
繼續加油~~沖沖沖! ! !
總結
到此這篇關于java關鍵字this和super的區別和理解的文章就介紹到這了,更多相關java關鍵字this和super區別內容請搜索服務器之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持服務器之家!
原文鏈接:https://blog.csdn.net/weixin_44015158/article/details/113406809