Java- 繼承和多態(tài)

Java- 繼承和多態(tài)

  1. 可以從現(xiàn)有的類派生出新類。這稱為類的繼承。新類稱為次類、子類或派生類?,F(xiàn)有的類稱為超類、父類或基類。
  2. 構(gòu)造方法用來構(gòu)造類的實(shí)例。不同于屬性和方法,子類不繼承父類的構(gòu)造方法。它們只能用關(guān)鍵字 super 從子類的構(gòu)造方法中調(diào)用。
  3. 構(gòu)造方法可以調(diào)用重載的構(gòu)造方法或它的父類的構(gòu)造方法。這種調(diào)用必須是構(gòu)造方法的第一條語句。如果沒有顯式地調(diào)用它們中的任何一個(gè),編譯器就會(huì)把 super()作為構(gòu)造方法的第一條語句,它調(diào)用的是父類的無參構(gòu)造方法。
  4. 為了覆蓋一個(gè)方法,必須使用與它的父類中的方法相同的簽名來定義子類中的方法。
  5. 實(shí)例方法只有是可訪問的時(shí)候才能覆蓋。這樣,私有方法是不能覆蓋的,因?yàn)樗遣荒茉陬惐旧碇庠L問的。如果子類中定義的方法在父類中時(shí)私有的,那么這兩個(gè)方法是完全沒有關(guān)系的。
  6. 靜態(tài)方法與實(shí)例方法一樣可以繼承。但是,靜態(tài)方法不能覆蓋,如果父類中定義的靜態(tài)方法在子類中重新定義,那么父類中定義的方法被隱藏。
  7. Java 中的每個(gè)類都源于 Java.lang.Object類。如果一個(gè)類在定義時(shí)沒有指定繼承關(guān)系,那么它的父類就是Object。
  8. 如果一個(gè)方法的參數(shù)類型是父類(例如:Object),可以向該方法的參數(shù)傳遞任何子類(例如:Circle 類或 String 類)的對象。當(dāng)在方法中使用一個(gè)對象(例如:Circle對象或String 對象)時(shí),動(dòng)態(tài)的決定調(diào)用該對象方法(例如:toString)的某個(gè)特征的實(shí)現(xiàn)。(C++ 中的使用虛函數(shù)實(shí)現(xiàn)動(dòng)態(tài)連編)。
  9. 因?yàn)樽宇惖膶?shí)例總是它的父類的實(shí)例,所以,總是可以將一個(gè)子類的實(shí)例轉(zhuǎn)換成一個(gè)父類的變量。當(dāng)把父類的實(shí)例轉(zhuǎn)換成它的子類變量時(shí),必須使用轉(zhuǎn)換記號(hào)(子類名)進(jìn)行顯式轉(zhuǎn)換,向編譯器表明你的意圖。
  10. 一個(gè)類定義一個(gè)類型。子類定義的類型稱為子類型,而父類定義的類型稱為父類型。
  11. 當(dāng)從引用變量調(diào)用實(shí)例方法時(shí),該變量的實(shí)際類型在運(yùn)行時(shí)決定使用該方法的哪個(gè)實(shí)現(xiàn)。當(dāng)訪問數(shù)據(jù)域或靜態(tài)方法時(shí),引用變量的聲明類型在編譯時(shí)決定使用哪個(gè)方法。
  12. 可以使用表達(dá)式obj instanceof AClass(對象名 instanceof 類名)測試一個(gè)對象是否是一個(gè)類的實(shí)例。
  13. 可以使用 protected 修飾符來防止方法和數(shù)據(jù)被不同包的非子類訪問。
  14. 可以使用final 修飾符來表明一個(gè)類是終極的,是不能成為父類的;并且用它來表明一個(gè)方法是終極的,是不能覆蓋的。
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

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