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


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

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


{
??public?abstract?void?actionPerformed(ActionEvent?event);
} 標識接口:
標識接口是沒有任何方法和屬性的接口。
標識接口不對實現它的類有任何語義上的要求,它僅僅表明實現它的類屬于一個特定的類型。
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接口來聲明一些常量,然后由實現這個接口的類使用這些常量。
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";
}