最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

Java零基礎(chǔ)快速入門|Super(下)

2021-02-19 13:37 作者:動力節(jié)點小王本王  | 我要投稿



本篇文章主要內(nèi)容

super?使用在實例方法中

難點解惑


super?使用在實例方法中

super this 都可以使用在實例方法中,并且都不能使用在靜態(tài)方法當(dāng)中,“this”大部分情況下都是可以省略的,只有在方法中區(qū)分局部變量和實例變量的時候不能省略。那“super什么時候可以省略,什么時候不能省略呢?

運行結(jié)果如下圖所示:

super 和this

我們發(fā)現(xiàn) printName()方法中的 super.name this.name 最終輸出結(jié)果是一樣的,這是為什么呢?請看以上程序執(zhí)行的內(nèi)存圖:

父類的構(gòu)造方法執(zhí)行結(jié)束之后的內(nèi)存圖
子類的構(gòu)造方法執(zhí)行結(jié)束之后的內(nèi)存圖

?通過以上內(nèi)存結(jié)構(gòu)圖發(fā)現(xiàn) this.name super.name 實際上是同一塊內(nèi)存空間,所以它們的輸出結(jié)果是完全一樣的。接下來,我們再把以上的PaperBook 類修改一下:

運行結(jié)果如下圖所示:

super 和this 的區(qū)別

為什么super.name null 呢,我們一起來看看以上程序的內(nèi)存圖:

父類Book 的構(gòu)造方法執(zhí)行之后的內(nèi)存圖
子類PaperBook 的構(gòu)造方法執(zhí)行結(jié)束之后的內(nèi)存圖

通過以上內(nèi)存圖可以清楚的看到,父類 Book 的構(gòu)造方法在執(zhí)行的時候給 super.name 賦值null,子類PaperBook 的構(gòu)造方法在執(zhí)行的時候給this.name 賦值“零基礎(chǔ)學(xué)Java I”,由于在子類PaperBook?中定義了重名的變量name?導(dǎo)致在當(dāng)前對象中有兩個name,一個是從父類中繼承過來的,一個是自己的,如果此時想訪問父類中繼承過來的 name 則必須使用super.name當(dāng)直接訪問name 或者this.name 都表示訪問當(dāng)前對象自己的name。

通過以上的學(xué)習(xí),大家知道 super 在什么情況下不能省略了嗎?當(dāng)父類中有該實例變量, 子類中又重新定義了同名的實例變量,如果想在子類中訪問父類的實例變量,super 不能省略。實例方法是這樣嗎?我們可以來測試一下,請看代碼:

運行結(jié)果如下圖所示:

運行結(jié)果

過以上測試得出最終結(jié)論:父類和子類中有同名實例變量或者有同名的實例方法,想在子類中訪問父類中的實例變量或?qū)嵗椒?,則super 是不能省略的,其它情況都可以省略。


難點解惑

Java?super?存儲的是一個父對象的內(nèi)存地址嗎?this?保存了內(nèi)存地址指向了當(dāng)前對象, 那么super?也是保存了內(nèi)存地址指向了當(dāng)前對象的父對象嗎?

這個理解是錯誤的,在 Java 程序中創(chuàng)建 Java 對象的時候會調(diào)用構(gòu)造方法,在構(gòu)造方法執(zhí)行之前會先調(diào)用父類的構(gòu)造方法,在這里說明一下,調(diào)用父類的構(gòu)造方法實際上并不是創(chuàng)建父類對象,只是為了完成初始化當(dāng)前子類對象的父類型特征。所以嚴格意義上來說super 并不指向任何對象,super 只是代表了當(dāng)前對象中的那部分父類型特征,單獨輸出 super,例如System.out.println(super);是無法編譯的。

?

小結(jié)

通過本章節(jié)內(nèi)容的學(xué)習(xí),主要理解?super?代表什么,主要掌握?super?關(guān)鍵字的用法,例如在實例方法中super?怎么用,在構(gòu)造方法中super?又應(yīng)該怎么用。super?this?可以對比學(xué)習(xí)。


最后附Java零基礎(chǔ)視頻教程給大家,配合學(xué)習(xí)效果更佳!!


Java零基礎(chǔ)快速入門|Super(下)的評論 (共 條)

分享到微博請遵守國家法律
剑河县| 铅山县| 五峰| 蕲春县| 和林格尔县| 阳新县| 丽江市| 福安市| 平和县| 富裕县| 乐业县| 茂名市| 乌海市| 绥芬河市| 阿瓦提县| 河北区| 辉县市| 海兴县| 甘德县| 金堂县| 安宁市| 长海县| 沛县| 临清市| 房山区| 庄河市| 黔江区| 博客| 青浦区| 日喀则市| 含山县| 西峡县| 武威市| 深水埗区| 洪江市| 彭山县| 磴口县| 赤峰市| 广州市| 仁怀市| 都江堰市|