java為什么沒有多繼承?這個問題可能是我們?nèi)粘W習或工作經(jīng)常見到的。希望通過這個問題能讓你收獲頗深。下面是小編給大家?guī)淼膮⒖純?nèi)容,讓我們一起來看看吧!
創(chuàng)新互聯(lián)公司專注于企業(yè)成都營銷網(wǎng)站建設、網(wǎng)站重做改版、山東網(wǎng)站定制設計、自適應品牌網(wǎng)站建設、H5頁面制作、商城網(wǎng)站開發(fā)、集團公司官網(wǎng)建設、外貿(mào)網(wǎng)站建設、高端網(wǎng)站制作、響應式網(wǎng)頁設計等建站業(yè)務,價格優(yōu)惠性價比高,為山東等各大城市提供網(wǎng)站開發(fā)制作服務。Java只支持單繼承,不允許多重繼承,單繼承就是一個類只能有一個父類,多繼承就是一個類可以有多個父類。
Java可以有多層繼承,即一個類可以繼承某一個類的子類,如:類B繼承了類A,類C又可以繼承類B,那么類C也間接繼承了類A
子類可以繼承父類所有的成員變量和方法,但子類永遠無法繼承父類的構(gòu)造方法。在子類的構(gòu)造方法中可使用語句super(參數(shù)列表)調(diào)用父類的構(gòu)造方法。
類定義屬性和方法、描述某一類事物的抽象
按照邏輯上來說,單繼承更明確 一個子類就應該是其父類代表的事物中的某個更具體的類別,不應該即是這種東西又是那種東西
而從實用角度上來說,單繼承易讀、易維護、語義清晰、邏輯清楚
多繼承造成的問題。鉆石危機:
A foo() / \ / \ B foo() C foo() \ / \ / D foo()
假設類A中有一個public方法fun(),然后類B和類C同時繼承了類A,類B或類C中各自對fun()進行了覆蓋,這時類D通過多繼承同時繼承了類B和類C,這樣便導致鉆石危機了,程序在運行的時候?qū)椒╢un()該如何判斷?
class A{ public void foo(){ } } class B extends A{ public void foo(){ } } class C extends A{ public void foo(){ } } //Not allowed here. public class D extends B, C{ public void foo(){ } }
(1)如果在一個子類繼承的多個父類中擁有相同名字的實例變量,子類在引用該變量時將產(chǎn)生歧義,無法判斷應該使用哪個父類的變量。
(2)如果在一個子類繼承的多個父類中擁有相同方法,子類中有沒有覆蓋該方法,那么調(diào)用該方法時將產(chǎn)生歧義,無法判斷應該調(diào)用哪個父類的方法。
感謝各位的閱讀!看完上述內(nèi)容,你們對java為什么沒有多繼承大概了解了嗎?希望文章內(nèi)容對大家有所幫助。如果想了解更多相關(guān)文章內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)成都網(wǎng)站設計公司行業(yè)資訊頻道。
另外有需要云服務器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。