什么是二義性 多重繼承在什么時候會出現(xiàn)二義性問題?
多重繼承在什么時候會出現(xiàn)二義性問題?在多重繼承中,指向派生類的指針或引用可以轉(zhuǎn)換為指向其任何基類的指針或引用。因此,這種轉(zhuǎn)換更容易遇到歧義。解決這種歧義的方法是指定要使用的類的版本(即,以類名為前綴)
多重繼承在什么時候會出現(xiàn)二義性問題?
在多重繼承中,指向派生類的指針或引用可以轉(zhuǎn)換為指向其任何基類的指針或引用。因此,這種轉(zhuǎn)換更容易遇到歧義。
解決這種歧義的方法是指定要使用的類的版本(即,以類名為前綴)。但最好的方法是在派生類中定義函數(shù)的版本,以解決歧義。
Java為什么不能繼承多個父類?
Java支持單個繼承和多個實現(xiàn)。
如果支持多重繼承,則意味著一個子類可以同時從多個父類繼承,因此它具有多個父類的特性。如果子類繼承的父類具有相同的成員變量,則子類在引用該變量時將無法確定要使用哪個父類的成員變量。因此,多重繼承是有爭議的,不能多重繼承。
一般來說,一個人不能有一個以上的父親或母親。
設(shè)置虛基類的目的?
其目的是消除歧義。
當(dāng)多個繼承路徑上存在公共基類時,在多個路徑的匯合處,公共基類將生成多個實例(或多個副本)。如果只想保存基類的一個實例,可以將公共基類描述為虛擬基類。
虛擬基類的基本原則是在內(nèi)存中只有其成員的一個副本。這樣,通過將基類繼承聲明為虛繼承,只能繼承基類的一個副本,從而消除了歧義。使用虛擬限定符將基類繼承描述為虛擬的。