java介面的修飾符可以是abstract和final。介面可以被理解為一種特殊的類,不同的是介面的成員沒有執行體,是由全域常數和公共的抽象方法所組成;介面的方法預設是public abstract;而介面中不可以定義變數即只能定義常數(加上final修飾就會變成常數),所以介面的屬性預設是public static final 常數,且必須賦初值。
本教學操作環境: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中文網其他相關文章!

本篇文章给大家带来了关于java的相关知识,其中主要介绍了关于结构化数据处理开源库SPL的相关问题,下面就一起来看一下java下理想的结构化数据处理类库,希望对大家有帮助。

本篇文章给大家带来了关于java的相关知识,其中主要介绍了关于PriorityQueue优先级队列的相关知识,Java集合框架中提供了PriorityQueue和PriorityBlockingQueue两种类型的优先级队列,PriorityQueue是线程不安全的,PriorityBlockingQueue是线程安全的,下面一起来看一下,希望对大家有帮助。

本篇文章给大家带来了关于java的相关知识,其中主要介绍了关于java锁的相关问题,包括了独占锁、悲观锁、乐观锁、共享锁等等内容,下面一起来看一下,希望对大家有帮助。

本篇文章给大家带来了关于java的相关知识,其中主要介绍了关于多线程的相关问题,包括了线程安装、线程加锁与线程不安全的原因、线程安全的标准类等等内容,希望对大家有帮助。

本篇文章给大家带来了关于java的相关知识,其中主要介绍了关于枚举的相关问题,包括了枚举的基本操作、集合类对枚举的支持等等内容,下面一起来看一下,希望对大家有帮助。

本篇文章给大家带来了关于Java的相关知识,其中主要介绍了关于关键字中this和super的相关问题,以及他们的一些区别,下面一起来看一下,希望对大家有帮助。

本篇文章给大家带来了关于java的相关知识,其中主要介绍了关于平衡二叉树(AVL树)的相关知识,AVL树本质上是带了平衡功能的二叉查找树,下面一起来看一下,希望对大家有帮助。

本篇文章给大家带来了关于Java的相关知识,其中主要整理了Stream流的概念和使用的相关问题,包括了Stream流的概念、Stream流的获取、Stream流的常用方法等等内容,下面一起来看一下,希望对大家有帮助。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

PhpStorm Mac 版本
最新(2018.2.1 )專業的PHP整合開發工具

Atom編輯器mac版下載
最受歡迎的的開源編輯器

mPDF
mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

Dreamweaver Mac版
視覺化網頁開發工具