Java中鮮為人知的缺點(diǎn)(下)
發(fā)表時(shí)間:2023-07-27 來(lái)源:明輝站整理相關(guān)軟件相關(guān)文章人氣:
[摘要]最后討論一下無(wú)法繼承多種類的裝配問(wèn)題。該問(wèn)題的原因在于Java不允許多層繼承。 Java不能進(jìn)行多層繼承。這一點(diǎn)大多經(jīng)常作為其優(yōu)點(diǎn)而不是缺點(diǎn)而被提出來(lái)。C++允許多層繼承,但結(jié)果卻致使程序變得非...
最后討論一下無(wú)法繼承多種類的裝配問(wèn)題。該問(wèn)題的原因在于Java不允許多層繼承。
Java不能進(jìn)行多層繼承。這一點(diǎn)大多經(jīng)常作為其優(yōu)點(diǎn)而不是缺點(diǎn)而被提出來(lái)。C++允許多層繼承,但結(jié)果卻致使程序變得非常復(fù)雜,而且還產(chǎn)生了難以理解的錯(cuò)誤。
多層繼承在裝配時(shí)會(huì)很復(fù)雜 多層繼承會(huì)在如下幾個(gè)方面導(dǎo)致混亂。第一是名稱的沖突。在繼承具有相同名稱的其他類時(shí),不知道是哪個(gè)類的方法將會(huì)被調(diào)用(圖5)。這一點(diǎn)是在一個(gè)類繼承兩個(gè)已經(jīng)繼承了某一個(gè)類的類時(shí)經(jīng)常發(fā)生的問(wèn)題。這種繼承稱為菱形繼承(圖6)。在分別改寫(override)最上層的類的方法后,就會(huì)引起被最下層的類所調(diào)用的問(wèn)題。
http://china.nikkeibp.co.jp/china/img_data/030129java12.jpg |
圖5●在需要繼承兩個(gè)具有相同名稱的方法的超級(jí)類時(shí),其名稱就會(huì)發(fā)生沖突。這一點(diǎn)是經(jīng)常被作為多層繼承的問(wèn)題而指出來(lái)的地方(點(diǎn)擊放大) |