java 介面用法(通俗易懂)

2021-06-08 15:24:26 字數 1572 閱讀 5051

以前我一直沒有搞懂介面的工作流程,直到看了下面這篇文章:

很形象的介面的使用——針對初學者 

黎克特制代換原則是什麼?聽起來很高深,不過我們也不是什麼學院派,就不講大道理了,直接拿個例子來說一下。

我們拿人和程式設計師舉個例子。人是乙個大類,程式設計師是繼承自人的子類。看看這句話:人需要吃飯。這句話我們把「人」換成「程式設計師」,就是:程式設計師需要吃飯,這樣換不會有什麼問題。現在我們反過來,把「程式設計師可以用計算機寫程式」裡邊的程式設計師換成「人」,就是:人可以用計算機寫程式。這樣就不一定正確了,否則問題可就大了,我們這些程式設計師只怕沒得飯吃了。

這個就是黎克特制代換原則:使用父類的地方肯定可以用它的乙個子類來替換掉,但是使用乙個子類的時候用它的父類來替換就不一定正確了。

好,現在我們回到程式設計裡邊來。

看看下面的程式:

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

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);

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

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

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

**:

const用法總結(通俗易懂)

const的意思可以概括為 乙個不能被改變的普通變數 使得const在一定程度上提高程式的安全性和可靠性。const的幾種情況 int const size const int size 這兩條語句都是把size宣告為乙個整數,他的值不能被修改。可以在宣告的時候對他進行初始化,int const s...

numpy bincount 通俗易懂

bincount的用途很簡單,就是統計出乙個列表的各個元素的出現次數。例如輸入是 1,0,2,2,1,2,3,5 那麼輸出就是 1,2,3,1,0,1 這樣的結果可能並不是很直觀,可能依然會有同學會問為什麼會輸出這樣的結果。我們看看 假如我們把輸入的列表中的數字都統計一遍,形成乙個字典 key是列表...

通俗易懂的C STL

泛型程式設計 generic programming 是一種語言機制,通過它可以實現乙個標準的容器庫。像類一樣,泛型也是一種抽象資料型別,但是泛型不屬於物件導向,它是物件導向的補充和發展。泛型程式設計在c 上的應用主要體現在兩方面 函式模板和類模板。接下來舉個栗子 csdn部落格 anyway,模板...