第5章 專題:Java語言的接口
5.1 what?
一個(gè)Java接口是一些方法特征的集合。

接口繼承:一個(gè)類實(shí)現(xiàn)一個(gè)接口。
實(shí)現(xiàn)繼承:一個(gè)類是另一個(gè)類的子類。

接口和類的最重要區(qū)別:
接口僅僅描述方法的特征,而不給出方法的實(shí)現(xiàn);而類不僅給出方法的特征,而且給出方法的實(shí)現(xiàn)。

5.2 why?
接口是對(duì)可插入性的保證。
關(guān)聯(lián)的可插入性
關(guān)聯(lián):一個(gè)對(duì)象需要完成一項(xiàng)任務(wù),所以需要知道其他的對(duì)象,并且調(diào)用其他對(duì)象的方法。這個(gè)對(duì)象對(duì)其他對(duì)象的知識(shí)叫做關(guān)聯(lián)。
當(dāng)前對(duì)象并不在意所關(guān)聯(lián)的是哪一個(gè)具體類,而僅僅關(guān)心這個(gè)類是否實(shí)現(xiàn)了某一個(gè)接口。

調(diào)用的可插入性

類型
Java接口(以及Java抽象類)用來聲明一個(gè)新的類型。
在理想的情況下,一個(gè)具體Java類應(yīng)當(dāng)只實(shí)現(xiàn)Java接口和抽象Java類中聲明過的方法,而不應(yīng)當(dāng)給出多余的方法。

類型等級(jí)結(jié)構(gòu)
混合類型:
如果一個(gè)類已經(jīng)有一個(gè)主要的超類型,那么通過實(shí)現(xiàn)一個(gè)接口,這個(gè)類可以擁有另一個(gè)次要的超類型。這種次要的超類型就叫做混合類型。
當(dāng)一個(gè)具體類處于一個(gè)類的等級(jí)結(jié)構(gòu)之中的時(shí)候,為這個(gè)具體類定義一個(gè)混合類型是可以保證基于這個(gè)類型的可插入性的關(guān)鍵。

5.3 how?
單方法接口:
一個(gè)單方法接口只含有一個(gè)方法。

實(shí)現(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);
}

標(biāo)識(shí)接口:
標(biāo)識(shí)接口是沒有任何方法和屬性的接口。
標(biāo)識(shí)接口不對(duì)實(shí)現(xiàn)它的類有任何語義上的要求,它僅僅表明實(shí)現(xiàn)它的類屬于一個(gè)特定的類型。
java.io.Serializable、java.rmi.Remote等

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

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

標(biāo)識(shí)接口通常使用在工具類中,很少在其他地方使用。

常量接口:
用Java接口來聲明一些常量,然后由實(shí)現(xiàn)這個(gè)接口的類使用這些常量。

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";
}


歡迎大家訪問我的個(gè)人網(wǎng)站 萌萌的IT人