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

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

接口,interface,從中文的翻譯上來說,接口的意思就是兩個系統(tǒng)之間的聯(lián)系。

所以如果想要理解接口,你必須先搞清楚兩個系統(tǒng)之間會有什么樣的聯(lián)系呢?怎么聯(lián)系呢?

我們舉例說明:

比如一個大牌導(dǎo)演,現(xiàn)在要組織一臺晚會,這個大牌導(dǎo)演最擅長的就是大場面、大制作,演員無所為,他把誰放進(jìn)去,誰準(zhǔn)大紅大紫。但是也不是沒有任何標(biāo)準(zhǔn),抓一個人就用,導(dǎo)演列出了他要使用的演員的標(biāo)準(zhǔn):能說好臺詞;好,就這個標(biāo)準(zhǔn),普天之下,誰符合標(biāo)準(zhǔn)誰就可以拿來用了。

導(dǎo)演和演員是有關(guān)系的,導(dǎo)演需要支配演員。

我們看具體的演員和一個具體的導(dǎo)演。

演員類:

package net.qingsoft.example;

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

導(dǎo)演類:

package net.qingsoft.example;

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

 

大家已經(jīng)看到了,導(dǎo)演中的perform方法會用到演員Player;

我們測試一下:

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é)果:

演出馬上開始...
表演臺詞:---萬碼學(xué)堂探秘Java---
演出現(xiàn)在結(jié)束...

 

沒錯,就是這個結(jié)果。

現(xiàn)在呢有個機(jī)器人,很厲害,也可以說臺詞。

package net.qingsoft.example;

public class Robot {
 public void say(String message)
 {
  System.out.println("我是機(jī)器人,我說臺詞:==="+message+"===");
 }
}
 

那么這個機(jī)器人能否提供給導(dǎo)演來用呢?

也就是能否這樣用呢?

  Robot Robot = new Robot();
  Director director = new Director();
  director.perform(player);

別聽我說,你最好現(xiàn)在就實(shí)驗(yàn)一下??吹搅税?,不行。為什么呢?因?yàn)閜erform方法要的是Player,很明顯,Robot和Player沒有任何關(guān)系。我要的是饅頭,你給我了一把剪刀,這個不行。

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

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

package net.qingsoft.example;

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