Java接口的修飾符可以爲()

Java接口的修飾符可以爲()
A private B protected C final D abstract

解析:
答案:D
解析:接口很重要,爲了說明情況,這裏稍微囉嗦點:

(1)接口用於描述系統對外提供的所有服務,因此接口中的成員常量和方法都必須是公開(public)類型的,確保外部使用者能訪問它們

(2)接口僅僅描述系統能做什麼,但不指明如何去做,所以接口中的方法都是抽象(abstract)方法;

(3)接口不涉及和任何具體實例相關的細節,因此接口沒有構造方法,不能被實例化,沒有實例變量,只有靜態(static)變量

(4)接口的中的變量是所有實現類共有的,既然共有,肯定是不變的東西,因爲變化的東西也不能夠算共有。所以變量是不可變(final)類型,也就是常量了。

(5) 接口中不可以定義變量?如果接口可以定義變量,但是接口中的方法又都是抽象的,在接口中無法通過行爲來修改屬性。有的人會說了,沒有關係,可以通過 實現接口的對象的行爲來修改接口中的屬性。這當然沒有問題,但是考慮這樣的情況。如果接口 A 中有一個public 訪問權限的靜態變量 a。按照 Java 的語義,我們可以不通過實現接口的對象來訪問變量 a,通過 A.a = xxx; 就可以改變接口中的變量 a 的值了。正如抽象類中是可以這樣做的,那麼實現接口 A 的所有對象也都會自動擁有這一改變後的 a 的值了,也就是說一個地方改變了 a,所有這些對象中 a 的值也都跟着變了。這和抽象類有什麼區別呢,怎麼體現接口更高的抽象級別呢,怎麼體現接口提供的統一的協議呢,那還要接口這種抽象來做什麼呢?所以接口中 不能出現變量,如果有變量,就和接口提供的統一的抽象這種思想是牴觸的。所以接口中的屬性必然是常量,只能讀不能改,這樣才能爲實現接口的對象提供一個統 一的屬性。
通俗的講,你認爲是要變化的東西,就放在你自己的實現中,不能放在接口中去,接口只是對一類事物的屬性和行爲更高層次的抽象。對修改關閉,對擴展(不同的實現 implements)開放,接口是對開閉原則的一種體現。

所以:
**接口的方法默認是public abstract;
接口中不可以定義變量即只能定義常量(加上final修飾就會變成常量)。所以接口的屬性默認是public static final 常量,且必須賦初值。**

注意:final和abstract不能同時出現。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章