接下來(lái)跟初學(xué)Java的同學(xué)一起來(lái)領(lǐng)會(huì)一下Java里面接口的概念和應(yīng)用。

你確實(shí)已經(jīng)在用接口了,最典型的比如Swing里面的監(jiān)聽?;仡^想想,是不是?

接口,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)演。

演員類:

package net.qingsoft.example;

public class Player {
 public void say(String message)
 {
  System.out.println("表演臺(tái)詞:---"+message+"---");
 }
}

導(dǎo)演類:

package net.qingsoft.example;

public class Director {
 public void perform(Player player)
 {
  System.out.println("演出馬上開始...");
  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é)果:

演出馬上開始...
表演臺(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);

別聽我說(shuō),你最好現(xiàn)在就實(shí)驗(yàn)一下??吹搅税桑恍小槭裁茨??因?yàn)閜erform方法要的是Player,很明顯,Robot和Player沒(méi)有任何關(guān)系。我要的是饅頭,你給我了一把剪刀,這個(gè)不行。

你想到了,讓perform方法能使用Robot不就行了么,對(duì)我們可以重載。

修改一下Director類,重載perform方法

package net.qingsoft.example;

public class Director {
 public void perform(Player player)
 {
  System.out.println("演出馬上開始...");
  player.say("萬(wàn)碼學(xué)堂探秘Java");
  System.out.println("演出現(xiàn)在結(jié)束...");
 }
 public void perform(Robot robot)
 {
  System.out.println("演出馬上開始...");
  robot.say("萬(wàn)碼學(xué)堂探秘Java");
  System.out.println("演出現(xiàn)在結(jié)束...");
&nb