開卷有益,重看jdk文件 關於類和介面中的繼承

2021-10-07 04:54:36 字數 1380 閱讀 1326

類與類之間存在繼承關係的時候,要是子類和父類定義了乙個相同簽名的靜態方法時,兩個版本的方法被誰呼叫取決於實際呼叫它的類,即子類對父類方法隱藏了。另外,如果子類和父類定義了乙個相同簽名的例項方法時,用過父類引用指向子類例項的方式呼叫該方法的時候,實際呼叫的是子類方法,即父類方法被重寫。

//父類

public class animal

public void testinstancemethod()

}//子類

public class cat extends animal

public void testinstancemethod()

}//測試類

public class mytestoverridingandhidingmethod

//靜態方法和例項方法在被子類重寫的時候,會出現不同的結果。對靜態方法隱藏,對例項方法覆蓋。

}

注意:如果子類將父類相同簽名的例項方法修改為靜態方法,編譯報錯,反之亦然。

另外乙個點需要提及下:在乙個類裡面,和父類有相同名字的屬性會隱藏父類的屬性,即時他們的型別不同。在子類裡,這個父類的屬性不會被子類通過簡單的屬性名所引用。可以通過super.field對其引用。

jdk1.8之後,介面支援了預設方法。在介面的繼承中,方法會是怎麼樣的繼承規則呢?編譯器只認兩條準則:

public inte***ce flyable 

}public inte***ce mythical

}public class horse

}public class pegasus extends horse implements flyable,mythical

}

public inte***ce animal 

}public inte***ce egglayer extends animal

}public inte***ce firebreather extends animal

public class dragon implements egglayer, firebreather

}

注意:介面裡不存在靜態方法繼承一說

當然,最常規的實現類實現介面的抽象方法也是屬於繼承裡面的。

public inte***ce mammal 

public class horse

}public class mustang extends horse implements mammal

}

開卷有益的《開源技術選型手冊》

開卷有益的 開源技術選型手冊 上個月博文視點的朋友向我推薦了一本叫做 開源技術選型手冊 讀書,我利用閒暇時間翻閱了此書,感覺眼前一亮。長期以來我接觸open source基本上是依靠網路搜尋,這雖然方便,但我對open source的了解還是從盲人摸象開始,使我對open source的知識領域沒有...

《實現領域驅動設計》筆記(1) 開卷有益總覽

最近一鼓作氣買了兩本久負盛名的書 領域驅動設計 軟體核心複雜性應對之道 和 實現領域驅動設計 開卷有益,在學習的途中,做些筆記鞏固下,並記錄下感想。先來說下 實現領域驅動設計 大致翻了翻,本書並不是 演算法導論 那種很高階難懂的型別,是屬於思考實踐總結型別的。我相信,一章一章看下去,會有很多收穫的。...

軟體工程之系統建模篇 開卷有益

開篇簡述 uml概述 uml譯為統一建模語言,由物件導向方法領域三位著名學者提出,並結合優秀的軟體方法和思想演變而成,1997年被國際物件組織 omg 接受,目前被公認為最好的分析和設計物件導向軟體的標準建模語言。uml組成 uml由模型元素,擴充套件機制 圖及檢視等部分構成,由模型元素或擴充套件機...