java什麼麼要用介面

2021-04-21 10:03:20 字數 1576 閱讀 1275

通俗的講,就是為了降低耦合度。

給你看乙個我見過的很搞笑的例子:

看看下面的程式:

乙個學校裡邊,有兩種人:學生、老師。他們都要吃飯和睡覺。

------------------------------

public inte***ce 人

public class 學生 implements 人

public void 睡覺()

//其他特有方法,比如泡妞、打遊戲

} public class 老師 implements 人

public void 睡覺()

//其它特有方法,比如為生兒育女傳宗接代的歷史使命努力等不足為外人道的事情

} public class 學校

public void 放學(人 ren)

} -----------------------------

這裡就用到了黎克特制代換原則,"開飯()"和"放學()"的引數都是人,那麼這個地方如果換成學生和老師肯定也可以。

人 a = new 學生();

學校.開飯(a);

學校.放學(a);

這樣執行的結果就是學生回寢室吃飯。

人 b = new 老師();

學校.開飯(b);

學校.放學(b);

這樣執行的結果就是老師回家吃飯。

為什麼要這樣寫呢?這樣寫有什麼好處呢?

我在開飯的時候完全可以直接呼叫"學生.吃飯();"、"老師.吃飯();"啊。

接著看。

有一天,學校裡來了第三種人,家長。

家長既不是去寢室睡覺也不是回家睡覺,而是旅館睡覺,既不是去食堂吃飯也不是回家吃飯,而是去下館子。

這個時候學校這個系統該怎麼處理呢?

如果原來沒有定義"人"這個介面那就麻煩啦,所有用到人的地方**都要改。

現在不一樣了,我可以直接定義乙個類:家長,這個類實現人這個介面就可以了。

好,看**:

------------------------------

public class 家長 implements 人

public void 睡覺()

//其它特有方法,比如會見老師,曉之以錢,動之以利等等,不一而足

} -------------------------------

在呼叫的時候不需要修改任何**,還和原來一樣:

人 c=new 家長();

學校.開飯(c);

學校.放學(c);

輕鬆搞定家長的食宿問題!

這樣一來學校來再多的客人都沒關係啊,絕對可以應付自如,這也就是傳說中的可擴充套件性!

不知道初學者看到這裡是不是能夠明白介面的作用。如果你還不明白,那麼你把人這個介面去掉,自己寫乙個學校開飯和放學的類,然後再加乙個家長這個新新人類進去,看看你的**是什麼樣子的,再想一下在人口這麼多的中國,萬一哪天你的學校裡來了成千上萬個新新人類你該怎麼辦!

先宣告一下,這個案例可不是我想出來的~~

然後我們就很好理解了,為什麼用別人的東西要實現介面呢?很直接的乙個原因是這樣一來,程式設計的複雜度就可能會大大降低了,不是麼?

Java為什麼要用多執行緒

用多執行緒只有乙個目的,那就是更好的利用cpu的資源,因為所有的多執行緒 都可以用單執行緒來實現。說這個話其實只有一半對,因為反應 多角色 的程式 最起碼每個角色要給他乙個執行緒吧,否則連實際場景都無法模擬,當然也沒法說能用單執行緒來實現 比如最常見的 生產者,消費者模型 就例如乙個網路爬蟲的功能,...

java 為什麼要用泛型?

改用泛型可以增加可讀性和穩定性,無需強轉更便捷。比如說,list list new arraylist list.add new integer 0 integer x integer list.iterator next 上述,編譯器只能保證iterator返回的是object型別,為了保證對in...

為什麼要用實現介面的類例項化介面呢

一 介面不能例項化,用介面的實現類可以例項化,將實現類的物件在記憶體中的位址指向介面,這個介面就可以使用了二 實現介面的類 例項 new 實現介面的類 這樣用不好嗎?這樣已經不是好不好的問題了,這樣的話,要介面有什麼用?用介面就是讓例項和實現類的耦合度降低。讓程式更加容擴充套件。以下是問題之外的知識...