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