介面與抽象列的區別

2021-09-30 06:36:27 字數 1036 閱讀 8841

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

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

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

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

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

介面

抽象類

多繼承

支援

不支援

型別限制

沒有

有,只能是引用型別

方法實現

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

繼承類中可以不給出

擴充套件性

比較麻煩

相對比較靈活

多層繼承

比較麻煩,需要借助虛函式

比較靈活

介面與抽象區別

net提供了介面,這個不同於class或者struct的型別定義。介面有些情況,看似和抽象類一樣,因此有些人認為在.net可以完全用介面來替換抽象類。其實不然,介面和抽象類各有長處和缺陷,因此往往在應用當中,兩者要結合來使用,從而互補長短。接下來先說說抽象類和介面的區別。區別一,兩者表達的概念不一樣...

介面與抽象的區別

宣告方法的存在而不去實現它的類被叫做抽象類 abstract class 它用於要建立乙個體現某些基本行為的類,並為該類宣告方法,但不能在該類中實現該類的情況。不能建立abstract 類的例項。然而可以建立乙個變數,其型別是乙個抽象類,並讓它指向具體子類的乙個例項。不能有抽象建構函式或抽象靜態方法...

介面與抽象的區別

抽象類的使用特點 1.抽象類不能有例項化物件 2.有抽象方法的類一定是抽象類,但是抽象類中不一定有抽象方法 3.抽象類中的抽象方法必須在子類中被重寫。4.抽象方法沒有方法體 5.抽象類定義用abstract關鍵字修飾 介面的使用特點 1.介面中的所有方法都是抽象的 2.介面不能被例項化 3.介面中的...