2020-11-01繼承

  • Java面向?qū)ο蟮娜筇匦裕悍庋b,繼承,多態(tài)

1.繼承(在原有類的基礎(chǔ)上< 屬性和方法>,構(gòu)造一個新的 類。)

在 java 當(dāng)中,用extends關(guān)鍵字來表示一個類繼承了一個類。

父類更通用更抽象,子類更特殊更具體(因為父類相對于子類 而言,父類中有的方法,子類全都有;而子類有的屬性和方法父類 未必有,所以子類更具體,父類更抽象)。

頂層是Object類,所以當(dāng)你創(chuàng)建一個類時,都在間接或直接的 繼承了Object父類,即你創(chuàng)建的類永遠(yuǎn)為子類

繼承的特點:子類繼承了父類的成員(即屬性和方法),雖然 父類中私有的屬性和方法也被繼承了,但是訪問不到。

2.引用類型比較方法

在object類中equals方法只能用來比較地址是否一樣

String可以使用equals比較地址是因為它重寫了equals方法

 public class Father(){} // 父類
 public class Son extends Father(){} // 子類 
  • 權(quán)限修飾符:private只支持同一類里面的;

  • friendly:支持同胞和本類;

  • protected:支持同胞 父子 本類;

  • public:全部都支持。

3.重寫 與 重載

3.1重寫:

當(dāng)子類繼承父類的方法,這些方法不滿足自身需求時,子類可 以重寫從父類繼承的方法:

  • 返回類型、方法名、參數(shù)與父類完全相同。

方法重寫要求:返回值類型相同或者父類返回值類型的子類 類型,方法名稱相同

效果:子類在調(diào)用方法時,會調(diào)用自身重寫的方法,父類的方 法就被覆蓋了不可見。

3.2重載:

在同一類中方法名稱相同,方法的參數(shù)列表不同,和返回值無 關(guān)

參數(shù)列表不同的表現(xiàn)形式:參數(shù)的類型不同,個數(shù)不同,位置不 同,參數(shù)列表不同和參數(shù)名稱沒有關(guān)系

4.equals 與 == 以及 instanceof的區(qū)別

  1. "==" 比較基本數(shù)據(jù)類型時比較的是表面值內(nèi)容,而比較兩個 對象時比較的是兩個對象的內(nèi)存地址值

  2. 對于equals方法,注意:equals 方法不能作用于基本數(shù)據(jù)類 型的變量,如果沒有對equals方法進行重寫,則比較的是引用類型 的變量所指向的對象的地址。

  3. 概括:

    在基本數(shù)據(jù)類型比較值內(nèi)容時 ”=“

    引用類型時:如果 equals 重寫則比較值內(nèi)容 equals不重寫則比較地址

    4.instanceof:用來判斷內(nèi)存中實際對象A是不是B類型,一般用 來做類的類型判斷。如果是同類,則使用強轉(zhuǎn)。

5.super 關(guān)鍵字

super關(guān)鍵字和this關(guān)鍵字的特點類似

super關(guān)鍵字代表的是父類對象的引用(保存的是父類引用對象 的內(nèi)存地址)。

**this**關(guān)鍵字代表的是當(dāng)前對象的引用(保存的是當(dāng)前對象的內(nèi) 存地址)。
   
當(dāng)子父類的成員出現(xiàn)同名的時候,可以通過super關(guān)鍵字來區(qū) 分。子類的構(gòu)造方法中,通過super關(guān)鍵字來調(diào)用父類的構(gòu)造方法, 且必須是子類構(gòu)造方法中的第一條語句。
   
當(dāng)我們產(chǎn)生子類對象的時候,肯定先要去調(diào)用父類的構(gòu)造方法 來產(chǎn)生父類的對象,再產(chǎn)生子類對象。

6.出入多態(tài)

多態(tài)存在的前提

  1. 要有繼承
  2. 要有重寫
  3. 要有父類引用指向子類對象
  • 多態(tài)的特性:擴展性較強
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容