1 回答

TA貢獻(xiàn)1804條經(jīng)驗(yàn) 獲得超7個(gè)贊
Java只有單繼承,舉個(gè)例子,在這里有個(gè)A類,我們又編寫了兩個(gè)類B類和C類,并且B類和C類分別繼承了A類,并且對(duì)A類的同一個(gè)方法進(jìn)行了覆蓋。如果此時(shí)我們?cè)俅尉帉懥艘粋€(gè)D類,并且D類以多繼承的方式同時(shí)集成了B類和C類,那么D類也會(huì)繼承B類和C類從A類中重載的方法,那么問(wèn)題來(lái)了,D類也開(kāi)始犯迷糊了,我到底應(yīng)該哪個(gè)繼承哪個(gè)類中的方法呢,因?yàn)轭愂墙Y(jié)構(gòu)性的,這樣就會(huì)造成結(jié)構(gòu)上的混亂。這就是多繼承的菱形繼承問(wèn)題。
C++也是面向?qū)ο蟮?,為什么它卻可以多繼承的呢?首先,C++語(yǔ)言是1983年由貝爾實(shí)驗(yàn)室的Bjarne Stroustrup在C語(yǔ)言的基礎(chǔ)上推出的,Java語(yǔ)言是1995年由James Gosling和同事共同正式推出的。其次,在C++被設(shè)計(jì)出來(lái)后,就會(huì)經(jīng)常掉入多繼承這個(gè)陷阱,雖然它也提出了相應(yīng)的解決辦法,但Java語(yǔ)言本著簡(jiǎn)單的原則舍棄了C++中的多繼承,這樣也會(huì)使程序更具安全性。
- 1 回答
- 0 關(guān)注
- 511 瀏覽
添加回答
舉報(bào)