c 為什麼要使用介面

2021-04-26 17:06:35 字數 1506 閱讀 8787

c#為什麼要使用介面?通俗的講,就是為了降低耦合度。給大家看乙個我見過的很搞笑的例子。看看下面的程式:乙個學校裡邊,有兩種人:學生、老師。他們都要吃飯和睡覺。

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

public inte***ce i人

public class 學生:i人

public void 睡覺()

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

}public class 老師:i人

public void 睡覺()

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

}public class 學校

public void 放學(i人 ren)

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

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

i人 某學生 = new 學生();

某學生.開飯();

某學生.放學();

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

i人 某老師 = new 老師();

某老師.開飯();

某老師.放學();

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

為什麼要這樣寫呢?這樣寫有什麼好處呢? 我在開飯的時候完全可以直接呼叫「學生.吃飯();」、「老師.吃飯();」。接著看,有一天,學校裡來了第三種人,家長。 家長既不是去寢室睡覺也不是回家睡覺,而是旅館睡覺,既不是去食堂吃飯也不是回家吃飯,而是去下館子。 這個時候學校這個系統該怎麼處理呢? 如果原來沒有定義"i人"這個介面那就麻煩啦,所有用到人的地方**都要改。 現在不一樣了,我可以直接定義乙個類:家長,這個類實現人這個介面就可以了。 好,看**:

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

public class 家長:i人

public void 睡覺()

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

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

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

i人 某家長=new 家長();

某家長.開飯();

某家長.放學();

輕鬆搞定家長的食宿問題! 這樣一來學校來再多的客人都沒關係啊,絕對可以應付自如,這也就是傳說中的可擴充套件性!不知道大家看到這裡是不是能夠明白介面的作用。如果你還不明白,那麼你把人這個介面去掉,自己寫乙個學校開飯和放學的類,然後再加乙個家長這個新新人類進去,看看你的**是什麼樣子的,再想一下在人口這麼多的中國,萬一哪天你的學校裡來了成千上萬個新新人類你該怎麼辦!

先宣告一下,這個案例可不是我想出來的~~但是很經典,是不?

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

C 中為什麼要使用斷言

斷言assert是僅在debug下有效的巨集,當其中的條件為假時,觸發錯誤提示。使用斷言的目的是捕捉不應該發生的非法情況。注意 不要混淆非法情況與錯誤情況之間的區別,後者的出現是因為 錯誤,是一定要作出處理的。如何使用 1 在函式的入口處,使用斷言檢查引數的有效性 合法性 2 在編寫函式時,要進行反...

為什麼要使用blog

有哥們問我,你為什麼使用blog?我總結了一下,覺得有如下幾個原因。1對自己的督促 有了blog,就會經常記得寫點東西 就會經常翻翻網上的新文章,了解一下新技術,不至於迷失在忙碌的生活中 如果把自己的所感所想所學寫出了,自己對自己也會有個概念,不至於迷迷糊糊 還有,畢竟是掛在網上的文字,心中難免擔心...

為什麼要使用XML

xml 代表擴充套件標記語言 extensible markup language 是由 world wide web consortium w 3c 的 xml工作組定義的。這個工作組是這樣描述該語言的 擴充套件標記語言 xml 是 sgml 的子集,其目標是允許普通的 sgml 在web 上以目...