標籤:返回 修飾符 多繼承 特徵 bst 系統 xtend final 介面
介面interface,顧名思義,是為了一種事物與另一種事物進行交流提供的通道(手段),例如我們現在的作業系統是Windows系統,我們見到的介面和各個功能的按鈕都是圖形使用者介面,介面就是使用者和應用程式內部互動的介面。介面實際上有兩種含義:一是一個類所具有的方法的特徵集合,是一種邏輯上的抽像;二是java介面,java語言中存在的結構,有特定的文法和結構,前者叫做“介面”後者叫做“java介面”。本節我們研究的是java介面。
java中的介面是一系列方法的聲明,是一些方法的特徵集合。一個介面只有方法特徵沒有方法的實現,因此這些方法可以在不同的地方被不同的類實現,而這些實現可以具有不同的行為(功能)。介面具有以下特徵:
(1)在java中只支援單繼承。如果要實現多繼承可以通過介面實現。
(2)封裝性。介面提供一種途徑,使類隱藏其處理的特定事物的細節,僅對外公布它必須支援的屬性。只需要知道調用的方法及其參數,而不需要知道內部的實現。
(3)面向介面變成,比如A,B實現介面C,在一個方法的參數中可以寫C(可以代表A也可以代表B),到時動態地傳入A或B 的執行個體都可以。
介面的定義:介面包含常量和抽像方法,沒有變數和其他成員方法,一旦定義了介面,所有的類都可以實現該介面,並且由於介面支援多繼承,多以一個類一次可以同時實現多個介面。介面的具體定義格式如下:
[public] interface 介面名 [extends 多個父介面]
{
[public] [static] [final] 類型 常量名=值;
[public] [abstract] 傳回型別 方法名([參數]);
}
其中介面中預設的屬性都是常量,並且常量預設必須是公有常量,不允許有變數和普通方法,所以常量的修飾符,不能寫具體的實現,所以方法前的修飾符public和abstract也可以省略。例如定義A介面:
interface A{
int p=4.14;
void show();
}
介面A 的屬性p為一個public常量,show()為一個public的抽像方法。需要注意的是,由於p是一個常量,所以p在定義的同時必須給他賦初值。
介面定義的同時,可以指出它的封裝性。如果是public,任何地方都可以實現介面;如果沒有public,為預設狀態,只能被同一個包中的類訪問。
介面支援多繼承多個介面之間用逗號隔開,其父親也必須是介面。例如:
public interface Father{
void fn1();
void fn2();
}
public interface Mother{
void fn3();
void fn4();
}
public interface Son extends Father,Mother
{
void fn5();
}
在Father介面中有fn1()和fn2()兩個抽像方法,Mother介面中有fn3()和fn4()兩個抽像方法.定義的Son介面中有一個fn5()抽像方法,由於他的父親是Father和Mother介面,所以Son介面中應該有5 個抽像方法。如果一個類實現Son介面,它必須實現Son,Father,Mother中的5個方法。
ps:介面的父親一定是介面,不能是類。
介面,介面的定義