第5章 專題:Java語言的接口
5.1 what?
一個Java接口是一些方法特征的集合。
接口繼承:一個類實現(xiàn)一個接口。
實現(xiàn)繼承:一個類是另一個類的子類。
接口和類的最重要區(qū)別:
接口僅僅描述方法的特征,而不給出方法的實現(xiàn);而類不僅給出方法的特征,而且給出方法的實現(xiàn)。
5.2 why?
接口是對可插入性的保證。
關(guān)聯(lián)的可插入性
關(guān)聯(lián):一個對象需要完成一項任務(wù),所以需要知道其他的對象,并且調(diào)用其他對象的方法。這個對象對其他對象的知識叫做關(guān)聯(lián)。
當(dāng)前對象并不在意所關(guān)聯(lián)的是哪一個具體類,而僅僅關(guān)心這個類是否實現(xiàn)了某一個接口。
調(diào)用的可插入性
類型
Java接口(以及Java抽象類)用來聲明一個新的類型。
在理想的情況下,一個具體Java類應(yīng)當(dāng)只實現(xiàn)Java接口和抽象Java類中聲明過的方法,而不應(yīng)當(dāng)給出多余的方法。
類型等級結(jié)構(gòu)
混合類型:
如果一個類已經(jīng)有一個主要的超類型,那么通過實現(xiàn)一個接口,這個類可以擁有另一個次要的超類型。這種
次要的超類型就叫做混合類型。
當(dāng)一個具體類處于一個類的等級結(jié)構(gòu)之中的時候,為這個具體類定義一個混合類型是可以保證基于這個類型的可插入性的關(guān)鍵。
5.3 how?
單方法接口:一個單方法接口只含有一個方法。
實現(xiàn)單方法接口的源代碼:
public?class?MyThreadedClass?extends?SomeClass?implements?Runnable


{
??.
??.
??.
??public?void?run()

??
{
????//write?your?code?here
??}
}ActionListener接口的源代碼:
public?interface?ActionListener


{
??public?abstract?void?actionPerformed(ActionEvent?event);
} 標識接口:
標識接口是沒有任何方法和屬性的接口。
標識接口不對實現(xiàn)它的類有任何語義上的要求,它僅僅表明實現(xiàn)它的類屬于一個特定的類型。
java.io.Serializable、java.rmi.Remote等
java.io.Serializable接口的源代碼:
package?java.io;

public?interface?Serializable
{}java.rmi.Remote接口的源代碼:
package?java.rmi;

public?interface?Remote
{}標識接口通常使用在工具類中,很少在其他地方使用。
常量接口:用Java接口來聲明一些常量,然后由實現(xiàn)這個接口的類使用這些常量。
AppConstants接口的源代碼:
public?interface?AppConstants


{
??public?static?final?DATA_SOURCE_NAME?=?"WEBSPHERE_DATA_SOURCE";
??public?static?final?USER_NAME?=?"APP_USER";
??public?static?final?PASSWORD?=?"w1nter";
}