重慶分公司,新征程啟航
為企業提供網站建設、域名注冊、服務器等服務
為企業提供網站建設、域名注冊、服務器等服務
java為什么沒有多繼承?這個問題可能是我們日常學習或工作經常見到的。希望通過這個問題能讓你收獲頗深。下面是小編給大家帶來的參考內容,讓我們一起來看看吧!
Java只支持單繼承,不允許多重繼承,單繼承就是一個類只能有一個父類,多繼承就是一個類可以有多個父類。
Java可以有多層繼承,即一個類可以繼承某一個類的子類,如:類B繼承了類A,類C又可以繼承類B,那么類C也間接繼承了類A
子類可以繼承父類所有的成員變量和方法,但子類永遠無法繼承父類的構造方法。在子類的構造方法中可使用語句super(參數列表)調用父類的構造方法。
類定義屬性和方法、描述某一類事物的抽象
按照邏輯上來說,單繼承更明確 一個子類就應該是其父類代表的事物中的某個更具體的類別,不應該即是這種東西又是那種東西
而從實用角度上來說,單繼承易讀、易維護、語義清晰、邏輯清楚
多繼承造成的問題。鉆石危機:
A foo() / \ / \ B foo() C foo() \ / \ / D foo()
假設類A中有一個public方法fun(),然后類B和類C同時繼承了類A,類B或類C中各自對fun()進行了覆蓋,這時類D通過多繼承同時繼承了類B和類C,這樣便導致鉆石危機了,程序在運行的時候對應方法fun()該如何判斷?
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)如果在一個子類繼承的多個父類中擁有相同名字的實例變量,子類在引用該變量時將產生歧義,無法判斷應該使用哪個父類的變量。
(2)如果在一個子類繼承的多個父類中擁有相同方法,子類中有沒有覆蓋該方法,那么調用該方法時將產生歧義,無法判斷應該調用哪個父類的方法。
感謝各位的閱讀!看完上述內容,你們對java為什么沒有多繼承大概了解了嗎?希望文章內容對大家有所幫助。如果想了解更多相關文章內容,歡迎關注創新互聯成都網站設計公司行業資訊頻道。
另外有需要云服務器可以了解下創新互聯scvps.cn,海內外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業上云的綜合解決方案,具有“安全穩定、簡單易用、服務可用性高、性價比高”等特點與優勢,專為企業上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。