接口泛指別人調(diào)用的方法或者是函數(shù)。我們是通過(guò)Interface來(lái)定義接口的,我們也可以將接口看做成一個(gè)抽象的類,只不過(guò)他沒(méi)有構(gòu)造方法,同時(shí)它里面只有靜態(tài)的屬性和抽象的方法。這樣的話接口的實(shí)現(xiàn)就有幾點(diǎn)注意的事項(xiàng)了:
1、接口的實(shí)現(xiàn)使用的是implements關(guān)鍵字來(lái)實(shí)現(xiàn)的。
2、接口的實(shí)現(xiàn)我們要實(shí)現(xiàn)接口里面的所有的抽象類當(dāng)時(shí)如果實(shí)現(xiàn)接口的類是一個(gè)抽象的類的話就可以不實(shí)現(xiàn)接口里面的抽象方法。
3、因?yàn)榻涌跊](méi)有構(gòu)造方法所以接口不可以實(shí)例化。
眾所周知java不像c++那樣能有多繼承,java要實(shí)現(xiàn)多繼承的話就要通過(guò)接口來(lái)實(shí)現(xiàn),接口是可以多繼承的。接口其實(shí)就是一種約定,所以實(shí)現(xiàn)接口的類可以有很多。我們有一個(gè)例子來(lái)細(xì)說(shuō)接口與實(shí)現(xiàn):
我們定義一個(gè)書(shū)信的接口
public interface ILetter {
/***
* 書(shū)信的標(biāo)題
* @param str1 書(shū)信的標(biāo)題
*/
void title(String str1);
/**
* 書(shū)信的問(wèn)候語(yǔ)
* @param str2 書(shū)信的問(wèn)候語(yǔ)
*/
void sallHello(String str2);
/**
* 書(shū)信的內(nèi)容
* @param str3 書(shū)信的內(nèi)容
*/
void body(String str3);
/***
* 書(shū)信的結(jié)尾
* @param str4 書(shū)信的結(jié)尾
*/
void over(String str4);
/***
* 寫(xiě)信人的姓名
* @param str5 寫(xiě)信人的姓名
*/
void name(String str5);
/***
* 寫(xiě)信的日期
* @param str6 寫(xiě)信的日期
*/
void date(String str6);
}
我們定義的這個(gè)接口將日常生活中寫(xiě)信的格式,這樣我們只要向里面添加文字就可以了?,F(xiàn)在我們頂一個(gè)類來(lái)實(shí)現(xiàn)接口:
public class Letter implements ILetter {
@Override
public void title(String str1) {
System.out.println(str1);
}
@Override
public void sallHello(String str2) {
System.out.println(" "+str2);
}
@Override
public void body(String str3) {
System.out.println("\n "+str3);
}
@Override
public void over(String str4) {
System.out.println("\n "+str4);
}
@Override
public void name(String str5) {
System.out.println(" "+str5);
}
@Override
public void date(String str6) {
System.out.println(" "+str6);
}
}
實(shí)現(xiàn)接口的這個(gè)類里面我們重寫(xiě)了書(shū)信接口里面的所有抽象的方法,我們一個(gè)類也可以實(shí)現(xiàn)多個(gè)接口,每個(gè)接口名之間我們用逗號(hào)隔開(kāi)就可以了。最后一步就是寫(xiě)一個(gè)測(cè)試類來(lái)測(cè)試我們寫(xiě)的接口是否有問(wèn)題了。
public class LetterText {
public static void main(String[] args) {
Letter letter = new Letter();
String str1 = "尊敬的爸爸、媽媽:";
String str2 = "你們好嗎?";
String str3 = "我在這里挺好的。\n 我會(huì)努力學(xué)的。\n 您二老保重身體!";
String str4 = "此致\n敬禮";
String str5 = "周杰";
String str6 = "2010年6月1日";
letter.title(str1);
letter.sallHello(str2);
letter.body(str3);
letter.over(str4);
letter.name(str5);
letter.date(str6);
}
}
我們會(huì)發(fā)現(xiàn)這和我們多態(tài)沒(méi)有什么多大區(qū)別??!那為什么我們要定義接口?定義接口我們可以更好的管理我們定義的多態(tài)。大量的節(jié)省代碼,同時(shí)大量的節(jié)省了我們火氣維護(hù)和更新代碼的時(shí)間。所以面向接口的編程可以給我們帶來(lái)無(wú)限的好處。