面試題:接口和抽象類的區別 轉自http://www.cnblogs.com/roky/archive/2008/02/21/1076332.html

區別一,兩者表達的概念不一樣。抽象類是一類事物的高度聚合,那麼對於繼承抽象類的子類來說,對於抽象類來說,屬於“是”的關係;而接口是定義行爲規範,因此對於實現接口的子類來說,相對於接口來說,是“行爲需要按照接口來完成”。

區別二,抽象類在定義類型方法的時候,可以給出方法的實現部分,也可以不給出;而對於接口來說,其中所定義的方法都不能給出實現部分。

區別三,繼承類對於兩者所涉及方法的實現是不同的。繼承類對於抽象類所定義的抽象方法,可以不用重寫,也就是說,可以延用抽象類的方法;而對於接口類所定義的方法或者屬性來說,在繼承類中必須要給出相應的方法和屬性實現。

區別四,在抽象類中,新增一個方法的話,繼承類中可以不用作任何處理;而對於接口來說,則需要修改繼承類,提供新定義的方法。


如下給出兩者的簡單對比表格。

 

接口

抽象類

多繼承

支持

不支持

類型限制

沒有

有,只能是引用類型

方法實現

繼承類型中必須給出方法實現

繼承類中可以不給出

擴展性

比較麻煩

相對比較靈活

多層繼承

比較麻煩,需要藉助虛函數

比較靈活

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章