首頁  >  文章  >  Java  >  java介面的修飾符可以為什麼

java介面的修飾符可以為什麼

青灯夜游
青灯夜游原創
2020-10-21 16:21:4511966瀏覽

java介面的修飾符可以為「public abstract」。介面用來描述系統對外提供的所有服務,因此介面中的成員常數和方法都必須是public型別;介面只描述系統能做什麼,但不指明如何做,所以介面中的方法都是abstract方法。

java介面的修飾符可以為什麼

java介面的修飾符,預設是public abstract,因為介面要實作。

介面很重要,為了說明情況,這裡稍微囉嗦點:

(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 常數,且必須賦初值。 **

以上是java介面的修飾符可以為什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn