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