這兩天在學(xué)習(xí)java中的繼承,其中提到Java是單繼承。于是想,為什么是單繼承而不能多繼承呢?
在網(wǎng)上找了很多資料,以下是我的一點(diǎn)理解。
假設(shè)說Java是可以多繼承的,比方說,我現(xiàn)在有一個(gè)A類,我又編寫了兩個(gè)類B類和C類,并且B類和C類分別繼承了A類,并且對(duì)A類的同一個(gè)方法進(jìn)行了重寫。接下來,我再寫了一個(gè)D類,并且D類以多繼承的方式同時(shí)集成了B類和C類,那么D類也會(huì)繼承B類和C類從A類中重寫的方法,那么問題來了,D類也開始犯迷糊了,我到底應(yīng)該哪個(gè)繼承哪個(gè)類中的方法呢,因?yàn)轭愂墙Y(jié)構(gòu)性的,這樣就會(huì)造成結(jié)構(gòu)上的混亂。這就是多繼承的菱形繼承問題。

Java是從C++語(yǔ)言上優(yōu)化而來,而C++也是面向?qū)ο蟮模瑸槭裁此鼌s可以多繼承的呢?
首先,C++語(yǔ)言是1983年在C語(yǔ)言的基礎(chǔ)上推出的,Java語(yǔ)言是1995年推出的。其次,在C++被設(shè)計(jì)出來后,就會(huì)經(jīng)常掉入多繼承這個(gè)陷阱,雖然它也提出了相應(yīng)的解決辦法,但Java語(yǔ)言本著簡(jiǎn)單的原則舍棄了C++中的多繼承,這樣也會(huì)使程序更具安全性。
從安全、簡(jiǎn)單方面來說,Java顯然設(shè)計(jì)的更好。如果單繼承不能滿足我們的業(yè)務(wù)需求,還可以使用接口這種更加靈活的方式來滿足我們的需求。
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注