在面向對象的概念中,抽象類和介面都是一種特殊的類,它們具有一些共性,也有一些區別。 二者的相同點: 都屬於引用類型的數據,是一種特殊的類; 都不能實例化; 都可以包含未實現的方法聲明和屬性聲明; 兩者的派生類都必須實現它們的聲明,派生類實現抽象類的抽象屬性和抽象方法,而介面則要實現它的所有成員 二者 ...
在面向對象的概念中,抽象類和介面都是一種特殊的類,它們具有一些共性,也有一些區別。
二者的相同點:
都屬於引用類型的數據,是一種特殊的類;
都不能實例化;
都可以包含未實現的方法聲明和屬性聲明;
兩者的派生類都必須實現它們的聲明,派生類實現抽象類的抽象屬性和抽象方法,而介面則要實現它的所有成員
二者的不同點:
抽象類是由相似對象抽象而成的類,而介面是一個行為的規定或規範;
一個類可以實現多個介面,但只能從一個基類(單繼承的情況下)中派生;
抽象類即包含了可變部分不可變部分,但是介面只定義了可變的部分;
總的來說,抽象類是對根源的抽象,介面是對動作的抽象;抽象類表示這個對象是什麼,介面表示這個對象能做什麼;當關註一個事物的本質時,如要創建組件的多個版本,用抽象類,當關註功能操作的時候,如創建的功能要在所有對象中使用,則可以用介面。
參考: 《C#可視化編程技術》