簡體   English   中英

接口的所有方法都是抽象的嗎?

[英]Are all methods of interface abstract?

我看到它在大多數地方都寫着-

"All of the methods in an interface are abstract."

但是接口也可能包含default methodsstatic methods ,並且存在默認方法和靜態方法的方法體。

那么接口的所有方法都是抽象的嗎?

從 Java 8 開始,接口還可以包含默認方法和靜態方法以及抽象方法。 默認方法和靜態方法都存在方法體。

Java 8 中最大的設計變化之一是接口的概念。 在 Java 7 之前,我們只能在接口中進行方法聲明。 但是從 Java 8 開始,我們可以在接口中擁有默認方法和靜態方法。

接口默認方法

為了在接口中創建默認方法,我們需要使用帶有方法簽名的“default”關鍵字。

接口靜態方法

靜態方法類似於默認方法,只是我們不能在實現類中覆蓋它們。 如果子類中的實現不佳,此功能可幫助我們避免出現不良結果。

有關更多信息,請查看

那是對的

它的所有方法都是抽象的,與其訪問修飾符無關。

@coder的完美解釋:

接口就像一個“純”抽象類。 該類及其所有方法都是抽象的。 抽象類可以有實現的方法,但類本身不能被實例化(對繼承和遵循 DRY 很有用)。

對於接口,由於根本沒有任何實現,因此它們對它們的目的很有用:契約。 如果實現接口,則必須實現接口中的方法。

所以區別在於抽象類可以有實現的方法,而接口不能。

它們分開的原因是一個類可以實現多個接口。 Java 和 C# 將類限制為來自單個父類的固有類。 某些語言允許您從多個類繼承,並且您可以通過“純”抽象類完成接口的工作。 但是多重繼承也有它的問題,即可怕的鑽石問題

查看有關抽象方法和類的 Oracles 文檔。

根據 Jeanne Boyarsky 和 Scott Selikoff 的書 OCA:Oracle® Certified Associate Java SE 8 Programmer I Study Guide Exam 1Z0-808,這是錯誤的。

. . . 因為在 Java 8 之前,所有接口方法都被假定為抽象的。 由於 Java 8 現在包含默認方法和靜態方法,並且它們從來都不是抽象的,因此您不能假設編譯器會將抽象修飾符隱式應用於所有方法。 (本書第346頁)

java接口中的所有方法都是抽象的,只有當它們被顯式聲明為靜態或默認時它們才不是抽象的。

是的,接口只能有抽象方法。

在 Java 編程語言中,接口是一種引用類型,類似於類,只能包含常量、方法簽名、默認方法、靜態方法和嵌套類型。 方法體只存在於默認方法和靜態方法中。 接口不能實例化——它們只能由類實現或由其他接口擴展。

來源: https ://docs.oracle.com/javase/tutorial/java/IandI/createinterface.html

接口中的所有方法都是抽象的。 這句話是真的。 接口必須具有抽象方法才能應用多重繼承。

接口中的所有方法都是抽象的,默認情況下 JAVA 中的字段是staticpublicfinal並且所有成員都是公共

而且我們不能將接口的成員設為privateprotected

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM