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