最后討論一下無法繼承多種類的裝配問題。該問題的原因在于Java不允許多層繼承。
Java不能進行多層繼承。這一點大多經常作為其優點而不是缺點而被提出來。C++允許多層繼承,但結果卻致使程序變得非常復雜,而且還產生了難以理解的錯誤。
多層繼承在裝配時會很復雜
多層繼承會在如下幾個方面導致混亂。第一是名稱的沖突。在繼承具有相同名稱的其他類時,不知道是哪個類的方法將會被調用(圖5)。這一點是在一個類繼承兩個已經繼承了某一個類的類時經常發生的問題。這種繼承稱為菱形繼承(圖6)。在分別改寫(override)最上層的類的方法后,就會引起被最下層的類所調用的問題。
http://china.nikkeibp.co.jp/china/img_data/030129java12.jpg | 圖5●在需要繼承兩個具有相同名稱的方法的超級類時,其名稱就會發生沖突。這一點是經常被作為多層繼承的問題而指出來的地方(點擊放大) |
|