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