如果子類(lèi)中定義了和父類(lèi)相同的方法名稱時(shí),就稱為“覆寫(xiě)”;
一、方法的覆寫(xiě)(核心)
范例1:實(shí)現(xiàn)覆寫(xiě)
結(jié)論:
子類(lèi)定義了和父類(lèi)的方法名稱相同,參數(shù)相同,返回值相同的方法后,表示覆寫(xiě)了父類(lèi)中的方法,而當(dāng)實(shí)例化的是子類(lèi)對(duì)象,所調(diào)用的方法一定是被子類(lèi)覆寫(xiě)的方法;
范例2:
有了繼承概念后對(duì)于this和super的使用一定要清楚:
1)this:表示先從本類(lèi)查找,如果本類(lèi)沒(méi)有則查找父類(lèi);
2)super:表示不查找本類(lèi),而是直接查找父類(lèi);
結(jié)論:
若想在子類(lèi)中調(diào)用已經(jīng)被子類(lèi)所覆寫(xiě)的方法,那么在方法前加“supper.方法()”的形式
但是在進(jìn)行方法覆寫(xiě)時(shí)關(guān)于權(quán)限的問(wèn)題,被子類(lèi)覆寫(xiě)的方法不能擁有比父類(lèi)更嚴(yán)格的訪問(wèn)控制權(quán)限。PRivate < default (不寫(xiě)) < public。
若一個(gè)方法本身是public被子類(lèi)覆寫(xiě)時(shí)變?yōu)榱藀rivate,則稱為權(quán)限嚴(yán)格了,那么此時(shí)子類(lèi)覆寫(xiě)時(shí),權(quán)限只能寫(xiě)public。如果父類(lèi)的方法使用的是default權(quán)限,那么子類(lèi)可使用default或public來(lái)表示;
二、面試題:OverLording(重載)、override(覆寫(xiě))的區(qū)別
在方法重載時(shí)返回值類(lèi)型可以不同,但是從代碼開(kāi)發(fā)來(lái)講,返回值類(lèi)型一定要保持相同。
三、屬性的覆蓋(無(wú)用)
當(dāng)子類(lèi)定義了和父類(lèi)相同的屬性名稱時(shí)就被稱為了屬性的覆蓋
一般而言屬性都要求被封裝,一旦屬性被封裝了,又何來(lái)覆蓋呢?
四、this和super區(qū)別
總結(jié):
1.this:調(diào)用本類(lèi)屬性(this .屬性)、本類(lèi)普通方法(this .方法())、調(diào)用構(gòu)造(this(),必須放在首行),表示當(dāng)前對(duì)象;
2. Super:由子類(lèi)調(diào)用父類(lèi)屬性(super .屬性)、調(diào)用父類(lèi)非私有方法(super .方法())、調(diào)用父類(lèi)構(gòu)造(super(),必須放在子類(lèi)構(gòu)造首行);
3.當(dāng)使用this和super調(diào)用構(gòu)造時(shí)不能同時(shí)出現(xiàn)
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注