作為開發者,誰從來沒有陷入過周而復始地爭論應該是使用接口還是抽象類?這是一場永無休止的爭論,不同陣營的人總是堅定地堅持自己的立場。應當使用接口還是抽象類?對于初學者來說那更是滿頭霧水。
這個問題應該考慮一下幾個因素:
? asp.net 2.0 bete 測試前的構造完全是通過戰略模式的定義,即通過接口,實現提供程序模型。在bate 1 時,基類(抽象類)代替了接口,因而發行版也使用基類。asp.net 團隊看起來對這個問題有了解決方案,不是嗎?
?? 接口定義了行為規范,就是相關的方法地一個集合,但是沒有具體的實現。接口類型是一種類型的部分描述,可能有多個類支持它,正因此,很多接口都采用后綴“able”作為結尾,諸如IDisposable,IComparable,IFormattable。如果一個接口只有一個有用的實現類,則該接口可能設計不當而造成的后果。
?? 基類定義了子類的公共行為和公共編程接口。類比接口靈活。如果要添加一個放入到類里,則只要該方法不是抽象地,那么任何派生類(子類)都可以使用到。而接口就不行。
?? 根據這些因素,只要有可能,盡量使用抽象類而不使用接口(但不是總是使用抽象類)
轉載于:https://www.cnblogs.com/964/archive/2008/07/18/1246353.html