国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
java接口的理解(1)

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

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

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

我們舉例說明:(下面的文字需要你打開你的編程工具,跟我一起實現(xiàn)所有代碼。)

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

導演和演員是有關系的,導演需要支配演員。

我們看具體的演員和一個具體的導演。

演員類:

Code:
  1. package net.qingsoft.example;   
  2.   
  3. public class Player {   
  4.  public void say(String message)   
  5.  {   
  6.   System.out.println("表演臺詞:---"+message+"---");   
  7.  }   
  8. }   

 

導演類:

Code:
  1. package net.qingsoft.example;   
  2.   
  3. public class Director {   
  4.  public void perform(Player player)   
  5.  {   
  6.   System.out.println("演出馬上開始...");   
  7.   player.say("青軟培訓探秘Java");   
  8.   System.out.println("演出現(xiàn)在結束...");   
  9.  }   
  10. }   

 

 

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

我們測試一下:

Code:
  1. package net.qingsoft.example;   
  2.   
  3. public class Test {   
  4.   
  5.  public static void main(String[] args) {   
  6.   Player player = new Player();   
  7.   Director director = new Director();   
  8.   director.perform(player);   
  9.   
  10.  }   
  11.   
  12. }   

 

結果:

Code:
  1. 演出馬上開始...   
  2. 表演臺詞:---青軟培訓探秘Java---   
  3. 演出現(xiàn)在結束...  

 

 

沒錯,就是這個結果。

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

Code:
  1. package net.qingsoft.example;   
  2.   
  3. public class Robot {   
  4.  public void say(String message)   
  5.  {   
  6.   System.out.println("我是機器人,我說臺詞:==="+message+"===");   
  7.  }   
  8. }   


 

那么這個機器人能否提供給導演來用呢?

也就是能否這樣用呢?

Code:
  1. Robot Robot = new Robot();   
  2. Director director = new Director();   
  3. director.perform(player);  

 

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

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

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

Code:
  1. package net.qingsoft.example;   
  2.   
  3. public class Director {   
  4.  public void perform(Player player)   
  5.  {   
  6.   System.out.println("演出馬上開始...");   
  7.   player.say("青軟培訓探秘Java");   
  8.   System.out.println("演出現(xiàn)在結束...");   
  9.  }   
  10.  public void perform(Robot robot)   
  11.  {   
  12.   System.out.println("演出馬上開始...");   
  13.   robot.say("青軟培訓探秘Java");   
  14.   System.out.println("演出現(xiàn)在結束...");   
  15.  }   
  16. }   


 

怎么樣,現(xiàn)在你也可以perform(robot)了吧

呵呵,新的問題又來了,現(xiàn)在我在想,為什么下面這個鸚鵡不能去參加演出呢?

Code:
  1. package net.qingsoft.example;   
  2.   
  3. public class Parrot {   
  4.  public void say(String message)   
  5.  {   
  6.   System.out.println("鸚鵡學舌:---"+message+"---");   
  7.  }   
  8. }   
  9.     

 

是的,你現(xiàn)在依然還不能這樣調(diào)用:

Code:
  1.  Parrot parrot = new Parrot ();   
  2. Director director = new Director();   
  3. director.perform(parrot);   

 

對,繼續(xù)重載perform方法吧

可是能拿來做演員的實在太多了,猴子、猩猩,據(jù)說最近韓國有頭大象都在練習說話了,怎么辦?難道我要一直重載無數(shù)個perform方法么?

其實,導演perform要的就是一個會說話的這么個玩意,你拿來的玩意只要符合這個標準,就沒問題了。那么我們不妨換個思路,導演只確認演員的標準,也就是只要求演員能說話就好了。

好的,導演對演員要求的標準是:

Code:
  1. package net.qingsoft.example;   
  2.   
  3. public interface Actress {   
  4.  public void say(String message);   
  5. }   
  6.     

 

這是個接口,導演根本不看你到底如何表演,只是要求了說你必須會say(String),你只要會這個就可以了。不過我給接口起這個Actress 名字確實不太合適,湊合用吧,也代表了現(xiàn)在導演的潮流了。

大家注意了,這個接口里面明確的say方法是抽象的,不需要任何具體操作,因為這是導演樹立標準的時候所不需要考慮的。

導演類也改變?yōu)椋?/strong>

Code:
  1. package net.qingsoft.example;   
  2.   
  3. public class Director {   
  4.  public void perform(Actress actress)   
  5.  {   
  6.   System.out.println("演出馬上開始...");   
  7.   actress.say("青軟培訓探秘Java");   
  8.   System.out.println("演出現(xiàn)在結束...");   
  9.  }   
  10. }   


你注意到了么,perform的參數(shù)變成了Actress。也就是現(xiàn)在不用再無休止的重載了,現(xiàn)在我們的導演perform方法只要一個,就是符合Actress這個標準就可以了。啥都行,只要符合這個標準。怎么才能符合這個標準呢?沒錯,就是implements,只要你的類,無論他出身何處(從什么繼承),只要他implements了我們的接口,他就是一個光榮的Actress了(你可能會想那些男演員怎么辦?那頭大象怎么辦?)。

好的,我們可以讓我們之前的Player implements Actress,Robot implements Actress,Parrot implements Actress,甚至你現(xiàn)在的隨便一個類implements Actress,然后你就可以

Code:
  1.  Xxxx xxxx = new Xxxx();   
  2. Director director = new Director();   
  3. director.perform(xxxx);  

 

只要這個Xxxx類實現(xiàn)了Actress標準就可以了。(你可以把任何一個類implements Actress,然后拿來替換Xxxx)

導演可以再也不用管到底天下有多少的可以當演員的類了,也不用天天為了頻繁跳出來的新的演員類而不斷重載方法了。他只看一件事情,就是你說來參加我導演的大戲,你必須符合我定的標準。當然導演可能隨時更改這個標準。他更改標準的時候也從來不去關心那些符合標準的人的情況,我給改了標準,你們?nèi)绻€要繼續(xù)implements,那沒辦法,你們必須也要重新添加新的方法(我新定的標準),然后才能繼續(xù)為我所用。

導演只看到了標準。

演員只需要符合標準。

導演可以不看演員的具體出身。

導演可以不管不問演員的其他需要。

導演只使用符合既定標準的那些方法。

誰想當演員,誰就要實現(xiàn)導演定義演員的標準。

拿起鍵盤,馬上實驗一下吧。

我只為了你能理解接口在編程中的作用。我們后面繼續(xù)看看ActionListener到底是個什么,Java的監(jiān)聽如何實現(xiàn)呢?

本站僅提供存儲服務,所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
生活服務
分享 收藏 導長圖 關注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服