接口与类的区别
一:接口負(fù)責(zé)功能的定義,項目中通過接口來規(guī)范類,操作類
???? 類是負(fù)責(zé)功能的具體實現(xiàn)
二:抽象類是不完全的類,里面有抽象的方法,屬性,也可以有具體的方法和屬性
???? 接口是個行為的規(guī)范,里面所有的東西都是抽象的,不能有修飾符,只能包含:屬性,方法,事件,索引器???
??? 二者都不能實例化
?
抽象類本身已經(jīng)位于很高的層次,一般在以下情況下會考慮用抽象類而不用接口.(1)有公共的一些instance變量必須在頂層類加以抽象;
(2)在你的類層次中可能會有一些模板操作,或者固定的實現(xiàn).
其他情況下一般考慮用接口,因為接口具有最大的靈活性.
例如,在我設(shè)計的一個類層次中需要定義三個接口
public void f1();
public void f2();
public void f3();
而f3()的功能是先后執(zhí)行f1,f2,如果你用接口就沒有辦法把這些定義完全表達(dá)出來
而用abstract class 則可以
abstract class Test
{
??? abstract protected void f1();
??? abstract protected void f2();
public void f3()
{
??? doF3();
??? //這里可以添加對所有派生類有影響的代碼。
}
protected virtual doF3()
{
??? //派生類可以重寫實現(xiàn)自己比較特別的功能
??? f1();
??? f2();
}
}
在這個例子中是一個典型的模版模式的實現(xiàn),在基類中定義確定的操作序列,而不同的序列則由具體子類實現(xiàn).
轉(zhuǎn)載于:https://www.cnblogs.com/carefree/archive/2006/08/13/475378.html
總結(jié)
- 上一篇: 架构模式: 事务日志跟踪
- 下一篇: 杀人游戏系列 之一