Java中引進的介面
抽象類是從多個類中抽象出來的模板,如果將這種抽象進行的更加徹底一點,就可以提煉出一種更加特殊的“抽象類”—— 介面(interface)
- 介面的概念
我們在日常生活中經常會遇見到介面,這種實體類事物,比如:我們使用USB介面可以連線U盤,不可以用別的介面連線U盤,因此,USB介面就是定義的一個規範。我們在Java中所定義的介面也是遵循這樣一種方法來的,介面定義了某一批類所需要遵守的規範,介面並不關心這些類的內部實現方法細節,它只規定了這批類必須提供的方法。因此介面定義的是多個類共同的公共的行為規範,這些行為是與外部交流的通道,這就意味著介面裡通常是定義一組公用的方法。 - 介面的定義
介面和類的定義不同,我們不使用class關鍵字來定義介面,而是使用interface關鍵字來定義介面。我們來看一下介面定義的基本語法規則:
public interface MyInterface {
//這裡的public關鍵字可以換成其他的修飾符用來定義,
}
修飾符可以是public或者預設,如果省略了public關鍵字,則預設採用包許可權的訪問控制符,即只有在相同包結構下才可以訪問介面。
介面名應與類名採用相同的語法規則,每個單詞首字母應該大寫,使用的詞語應該見名知意。
一個介面可以有多個直接父類,但介面只能繼承介面,不能繼承類。
public interface MyInterface {
private int a = 1;//此語法是錯誤的
{
int b = 1;
}
public MyInterface(){
}
}
由於介面定義的是一種規範,因此介面裡不能包含構造器和初始化定義。介面中只能包含成員變數(只能是靜態的)、方法(只能是抽象例項方法,類方法。預設方法或者私有方法)、內部類定義。
public interface MyInterface {
int a = 1;//靜態的成員變數
class abs {
}//內部類
enum status {
}//內部列舉類
void findArea();//抽象方法
}
我們上面定義的成員變數沒有新增任何關鍵字,但是沒有報錯,其實在系統中會自動為這些成員變數增加static 和final兩個修飾符,也就是說,不管是否使用 public static final修飾符,介面中的成員變數總是使用這三個修飾符來修飾。而且介面中沒有程式碼塊和內部類,因此我們在介面中的成員變數只能在定義時指定預設值。
public interface MyInterface {
int a = 1;
public static final int b =2;
}
上面的程式碼中兩個定義的成員變數的方法都是可以的,介面裡定義的方法只能是抽象方法,類方法,預設方法和私有方法,因此如果不是定義預設方法、類方法或者私有方法,系統會為普通方法增加abstract修飾符;介面中的方法總是使用 public abstract 關鍵字來修飾。介面中的普通方法不能有方法體。
public interface MyInterface {
void findArea();
public abstract void set();
}
上面的這兩種定義方法都是可以的。
相關文章
- Java中的介面Java
- java中的interface(介面)Java
- java中的Comparable介面Java
- JAVA介面中的變數Java變數
- Java學習--java中的集合框架、Collection介面、list介面Java框架
- Java中ListIterator介面Java
- 類與介面(三)java中的介面與巢狀介面Java巢狀
- java 中引數的傳遞Java
- java中的抽象類與介面Java抽象
- 利用Java處理Jmeter介面常用引數JavaJMeter
- Java集合框架中的介面和類Java框架
- 介面測試--獲取動態引數進階
- java中抽象類和介面Java抽象
- Java中「Future」介面詳解Java
- Java中Collection和Iterator介面Java
- java中的List介面(ArrayList、Vector、LinkedList)Java
- Java中的介面與抽象類詳解Java抽象
- Java進行post和get傳引數Java
- SpringBoot介面 - 如何優雅的對引數進行校驗?Spring Boot
- mybatis基礎03(介面中的多個引數處理)MyBatis
- java中lock介面是什麼Java
- java SE 1.8中Collection介面分析Java
- java方法引數中萬用字元的使用Java字元
- JAVA中的函式介面,你都用過嗎Java函式
- Java中如何使用泛型實現介面中的列表集合?Java泛型
- 個人理解emulateJSON作用 與java後臺介面引數的關係JSONJava
- Java中Lambda表示式的進化之路Java
- Java中main方法引數String[ ] args的使用JavaAI
- java中的OutOfMemory設定jvm啟動引數JavaJVM
- 教你在Java介面中定義方法Java
- Java中的Enumeration、Iterable和Iterator介面詳解Java
- Java中的介面與抽象類設計原則Java抽象
- 在Java程式中列印java執行時引數Java
- Java的Future介面Java
- 在Java中對集合當中的物件進行排序Java物件排序
- Java Web之SpringMVC 進行引數繫結JavaWebSpringMVC
- 使用java+TestNG進行介面迴歸測試Java
- Java中的引數傳遞有哪些?通俗易懂Java