標籤:
一、介面的概念
介面是一種更徹底的抽象。介面是從多個相似類中抽象出來的規範,介面不提供任何實現,介面體現的是規範和實現分離的設計哲學。
二、介面的定義
介面定義不再使用class關鍵字,而是使用interface關鍵字。
以下是定義介面的基本文法:
【修飾符】interface 介面名 extends 父介面1,父介面2...
{
//常量定義
//抽象方法定義
}
- 修飾符只能是public 或者省略,省略的話就是包存取層級,即只有在同一個包下才能訪問此介面。
- 一個介面可以有多個父類,但是只能繼承,不能實現介面。
- 介面裡定義的是多個類共同的公用的行為規範,因此類中定義的Field、方法、內部類、枚舉類都是public存取權限。
- 介面中的方法只能是抽象方法,由於abstract不能和static共同來修飾一個方法,所以介面中的所有方法總是public abstract來修飾的,可以預設不寫,預設會加上的。
- 介面中定義的Field是介面相關的,而且只能是常量,所以介面中定義的Field都是public static final 修飾的,可以預設不寫,系統會預設加上。
- 介面中不能定義構造器和初始化塊。
- 介面中可以定義內部類、枚舉類、介面,預設都是使用public static修飾,而且只能是public static 修飾。
下面我們看一下介面定義的例子:
package interfaceDemo;public interface OutPut { //介面中定義的Field只能是常量 int MAX_CACHE_LINE = 50; //這句話和上面那句話是等價的 //public static final int MAX_CACHE_LINE = 50; //介面中定義的方法只能是抽象的,沒有方法體 void out(); void getData(String msg);}
三、介面的繼承
介面和類不一樣,它是支援多繼承的。多個父介面跟在extends關鍵字後面,以逗號隔開。和類繼承一樣,介面繼承一個父介面的時候,會獲得父介面中定義的所有的抽象方法以及常量。
public interface InterfaceA { int A = 1; void print();}public interface InterfaceB { int B = 2; void say();}public interface InterfaceC extends InterfaceA, InterfaceB{ int C = 3; public static class Test { public static void main(String[] args) { System.out.println(InterfaceC.A); System.out.println(InterfaceC.B); System.out.println(InterfaceC.C); } }}
輸出結果為:
1
2
3
【JAVA】介面(一)