3 回答

TA貢獻(xiàn)1802條經(jīng)驗(yàn) 獲得超5個(gè)贊
你們提到的問(wèn)題并不是很難解決。事實(shí)上,例如埃菲爾完美地做到了?。ú⑶也灰肴我膺x擇或其他)
例如,如果你繼承了A和B,兩者都有方法foo(),那么你當(dāng)然不希望你的類C繼承A和B的任意選擇。你必須重新定義foo所以它很清楚會(huì)是什么如果調(diào)用c.foo()或者你必須重命名C中的一個(gè)方法,則使用它(它可能變?yōu)閎ar())
另外我認(rèn)為多重繼承通常非常有用。如果你看一下埃菲爾的圖書館,你會(huì)發(fā)現(xiàn)它已經(jīng)遍布整個(gè)地方,而且當(dāng)我不得不回到Java編程時(shí),我已經(jīng)錯(cuò)過(guò)了這個(gè)功能。

TA貢獻(xiàn)1111條經(jīng)驗(yàn) 獲得超0個(gè)贊
當(dāng)兩個(gè)類B和C繼承自A,而D類繼承自B和C時(shí)出現(xiàn)歧義。如果A中的方法B和C已重寫,而D不覆蓋它,那么哪個(gè)版本的D繼承的方法:B的那個(gè),還是C的?
...由于這種情況下類繼承圖的形狀,它被稱為“鉆石問(wèn)題”。在這種情況下,A級(jí)位于頂部,B和C分別位于其下方,D將兩者連接在一起形成菱形......
添加回答
舉報(bào)