為什么java中只允許繼承一個(gè)類?
一個(gè)類只能繼承一個(gè)其他的類
在Java語(yǔ)言中禁止多重繼承:一個(gè)類可以具有多個(gè)直接父類。多重繼承不合法的原因是容易引發(fā)意義不明確。例如,有一個(gè)類C,如果允許它同時(shí)繼承A類與B類(class C extends A,B{}),假如A、B兩個(gè)類都有同一種方法fun(),如果定義:
C c = new C();
那么c.fun()應(yīng)該調(diào)用哪一個(gè)父類的fun()方法?無(wú)法給出答案,因此Java語(yǔ)言禁止多重繼承。 但C++卻是可以的,所以C++比起java在語(yǔ)法上卻難了些。
但一個(gè)類可以實(shí)現(xiàn)多個(gè)接口,這又是為什么?
這一特性和上一特性結(jié)合使用,可以獲得和多重繼承相似的效果。
現(xiàn)假如類C實(shí)現(xiàn)了A與B兩個(gè)接口(class c implements A,c{}),且這兩個(gè)接口都有一個(gè)抽象fun()方法,現(xiàn)在調(diào)用方法時(shí)沒(méi)有任務(wù)不明確的地方,因?yàn)榻涌谥械乃蟹椒ǘ际浅橄?,并且超類的任何方法都需在子類中地覆蓋實(shí)現(xiàn),所以調(diào)用時(shí)其實(shí)是調(diào)用自己本身的實(shí)現(xiàn)方法,沒(méi)有什么調(diào)用不明確的說(shuō)法