接下來(lái)跟初學(xué)Java的同學(xué)一起來(lái)領(lǐng)會(huì)一下Java里面接口的概念和應(yīng)用。
你確實(shí)已經(jīng)在用接口了,最典型的比如Swing里面的監(jiān)聽(tīng)?;仡^想想,是不是?
接口,interface,從中文的翻譯上來(lái)說(shuō),接口的意思就是兩個(gè)系統(tǒng)之間的聯(lián)系。
所以如果想要理解接口,你必須先搞清楚兩個(gè)系統(tǒng)之間會(huì)有什么樣的聯(lián)系呢?怎么聯(lián)系呢?
我們舉例說(shuō)明:
比如一個(gè)大牌導(dǎo)演,現(xiàn)在要組織一臺(tái)晚會(huì),這個(gè)大牌導(dǎo)演最擅長(zhǎng)的就是大場(chǎng)面、大制作,演員無(wú)所為,他把誰(shuí)放進(jìn)去,誰(shuí)準(zhǔn)大紅大紫。但是也不是沒(méi)有任何標(biāo)準(zhǔn),抓一個(gè)人就用,導(dǎo)演列出了他要使用的演員的標(biāo)準(zhǔn):能說(shuō)好臺(tái)詞;好,就這個(gè)標(biāo)準(zhǔn),普天之下,誰(shuí)符合標(biāo)準(zhǔn)誰(shuí)就可以拿來(lái)用了。
導(dǎo)演和演員是有關(guān)系的,導(dǎo)演需要支配演員。
我們看具體的演員和一個(gè)具體的導(dǎo)演。
演員類(lèi):
package net.qingsoft.example;
public class Player {
public void say(String message)
{
System.out.println("表演臺(tái)詞:---"+message+"---");
}
}
導(dǎo)演類(lèi):
package net.qingsoft.example;
public class Director {
public void perform(Player player)
{
System.out.println("演出馬上開(kāi)始...");
player.say("萬(wàn)碼學(xué)堂探秘Java");
System.out.println("演出現(xiàn)在結(jié)束...");
}
}
大家已經(jīng)看到了,導(dǎo)演中的perform方法會(huì)用到演員Player;
我們測(cè)試一下:
package net.qingsoft.example;
public class Test {
public static void main(String[] args) {
Player player = new Player();
Director director = new Director();
director.perform(player);
}
}
結(jié)果:
演出馬上開(kāi)始...
表演臺(tái)詞:---萬(wàn)碼學(xué)堂探秘Java---
演出現(xiàn)在結(jié)束...
沒(méi)錯(cuò),就是這個(gè)結(jié)果。
現(xiàn)在呢有個(gè)機(jī)器人,很厲害,也可以說(shuō)臺(tái)詞。
package net.qingsoft.example;
public class Robot {
public void say(String message)
{
System.out.println("我是機(jī)器人,我說(shuō)臺(tái)詞:==="+message+"===");
}
}
那么這個(gè)機(jī)器人能否提供給導(dǎo)演來(lái)用呢?
也就是能否這樣用呢?
Robot Robot = new Robot();
Director director = new Director();
director.perform(player);
別聽(tīng)我說(shuō),你最好現(xiàn)在就實(shí)驗(yàn)一下。看到了吧,不行。為什么呢?因?yàn)閜erform方法要的是Player,很明顯,Robot和Player沒(méi)有任何關(guān)系。我要的是饅頭,你給我了一把剪刀,這個(gè)不行。
你想到了,讓perform方法能使用Robot不就行了么,對(duì)我們可以重載。
修改一下Director類(lèi),重載perform方法
package net.qingsoft.example;
public class Director {
public void perform(Player player)
{
System.out.println("演出馬上開(kāi)始...");
player.say("萬(wàn)碼學(xué)堂探秘Java");
System.out.println("演出現(xiàn)在結(jié)束...");
}
public void perform(Robot robot)
{
System.out.println("演出馬上開(kāi)始...");
robot.say("萬(wàn)碼學(xué)堂探秘Java");
System.out.println("演出現(xiàn)在結(jié)束...");
&nb