2016-04-29 229 views
5

我在閱讀Java 8中的接口時遇到了這個主題,有些場景我們使用默認或靜態關鍵字在接口中定義方法,允許下一個孩子重新定義相同的方法或實現它。這是否意味着多重繼承?還有一個問題,我發現返回類型必須是協變類型的其他編譯問題,這意味着它仍然不支持多重繼承?我們可以說java支持多重繼承嗎?讓我知道關於這個主題的更多細節。Java 8支持多重繼承嗎?

+2

@Draken我不認爲其他問題真的回答他的問題 - 作爲問題並非在界面內談論的Java 8和默認的實現所有。 – GhostCat

+0

混淆在於繼承這個詞的用法,從技術上說,繼承只能用於擴展類,而不能用於接口。所以我們不能做多重繼承,但可以做多重實現。我覺得在這個問題上的進一步閱讀將有助於更多 – Draken

+0

是的,你是對的@Jägermeister –

回答

5

這是否意味着多重繼承?

對於接口,是的,但不是類。通常人們會想到類,因爲只有類可以有字段和構造函數。這與Java 1.0沒有什麼不同

返回類型必須是協變類型的其他編譯問題,這意味着它仍然不支持多繼承?

協變返回類型的需求與是否有多重繼承無關。

我們可以說java支持多重繼承嗎?

對於接口,是的。

+0

如果我們編寫具有相同默認方法但具有不同返回類型的2個不同接口,則Java預計返回類型在實現類中是協變類型。沒有協變類型,Java會引發編譯錯誤。但是爲了使它支持多重繼承,返回類型可能不同。我們可以使用靜態方法使我們的Java支持多繼承。仍然有一個問題,我們實際上不得不追加Parent接口來使用它的靜態方法... –

+1

@ShaikhNizamuddin如果你有兩個返回不兼容類型的方法,開發人員給這些方法命名可能會讓人困惑。我建議給出不同的名稱,因此開發人員使用它應該期望得到什麼結果是明確的。 –

+0

對於具有不同返回類型的方法,使用不同的名稱是很好的做法。也許在即將到來的Java版本中(有點假設,樂觀),我們可以看到這種協變類型是非模糊的。 :) –

-2

接口,, Interface..all的方式..謝謝

+0

大小寫仍然存在不明確性返回類型不匹配,爲了支持多繼承,Java需要返回類型爲協變類型。但用戶可以自由選擇他自己的返回類型... –