首頁 > Java > Java入門 > 主體

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

青灯夜游
發布: 2023-01-04 13:04:09
原創
2845 人瀏覽過

java介面的修飾符可以是abstract和final。介面可以被理解為一種特殊的類,不同的是介面的成員沒有執行體,是由全域常數和公共的抽象方法所組成;介面的方法預設是public abstract;而介面中不可以定義變數即只能定義常數(加上final修飾就會變成常數),所以介面的屬性預設是public static final 常數,且必須賦初值。

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

本教學操作環境:windows7系統、java8版、DELL G3電腦。

抽象類別是從多個類別中抽像出來的模板,如果將這種抽象進行的更徹底,則可以提煉出一種更特殊的「抽象類別」-介面(Interface)。介面是 Java 中最重要的概念之一,它可以被理解為一種特殊的類,不同的是介面的成員沒有執行體,是由全域常數和公共的抽象方法所組成。

定義介面

Java 介面的定義方式與類別基本上相同,不過介面定義使用的關鍵字是interface,介面定義的語法格式如下:

[public] interface interface_name [extends interface1_name[, interface2_name,…]] {
    // 接口体,其中可以包含定义常量和声明方法
    [public] [static] [final] type constant_name = value;    // 定义常量
    [public] [abstract] returnType method_name(parameter_list);    // 声明方法
}
登入後複製

對上述語法的說明如下:

  • #public 表示介面的修飾符,當沒有修飾符時,則使用預設的修飾符,此時該介面的存取權限僅限於所屬的套件;

  • interface_name 表示介面的名稱。介面名稱應與類別名稱採用相同的命名規則,即如果僅從語法角度來看,介面名稱只要是合法的識別碼即可。如果要遵守 Java 可讀性規範,則介面名稱應由多個有意義的單字連綴而成,每個單字首字母大寫,單字與單字之間無需任何分隔符號。

  • extends 表示介面的繼承關係;

  • interface1_name 表示要繼承的介面名稱;

  • constant_name 表示變數名稱,一般是static 和final 型的;

  • returnType 表示方法的回傳值類型;

  • parameter_list 表示參數清單,在介面中的方法是沒有方法體的。

注意:一個接口可以有多個直接父接口,但接口只能繼承接口,不能繼承類別。

java介面的修飾符

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

(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不能同時出現。

更多程式相關知識,請造訪:程式設計教學! !

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

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!