C中抽象類和介面的區別,java中抽象類和介面的區別?

2021-03-03 20:45:32 字數 2157 閱讀 6740

1樓:好程式設計師

c#一、抽象類:

抽象類是特殊的類,只是不能被例項化;除此以外,具有類的其他特性;重要的是抽象類可以包括抽象方法,這是普通類所不能的。抽象方法只能宣告於抽象類中,且不包含任何實現,派生類必須覆蓋它們。另外,抽象類可以派生自一個抽象類,可以覆蓋基類的抽象方法也可以不覆蓋,如果不覆蓋,則其派生類必須覆蓋它們。

二、介面:

介面是引用型別的,類似於類,更和抽象類有所相似,以至於很多人對抽象類和介面的區別比較模糊。和抽象類的相似之處有三點:

1、不能例項化;

2、包含未實現的方法宣告;

3、派生類必須實現未實現的方法,抽象類是抽象方法,介面則是所有成員(不僅是方法包括其他成員);

另外,介面有如下特性:

介面除了可以包含方法之外,還可以包含屬性、索引器、事件,而且這些成員都被定義為公有的。除此之外,不能包含任何其他的成員,例如:常量、域、建構函式、解構函式、靜態成員。

一個類可以直接繼承多個介面,但只能直接繼承一個類(包括抽象類)。 其實java的介面和抽象類跟c#是差不多的, 他們的特性是相同!別的就是語法的不同了!

java中抽象類和介面的區別?

2樓:靠名真tm難起

抽象類是用來捕捉子類的通用特性的 。它不能被例項化,只能被用作子類的超類。抽象類是被用來建立繼承層級裡子類的模板。

介面是抽象方法的集合。如果一個類實現了某個介面,那麼它就繼承了這個介面的抽象方法。這就像契約模式,如果實現了這個介面,那麼就必須確保使用這些方法。

介面只是一種形式,介面自身不能做任何事情。

3樓:匿名使用者

簡單來說,

介面是公開的,裡面不能有私有的方法或變數,是用於讓別人使用的,而抽象類是可以有私有方法或私有變數的,

另外,實現介面的一定要實現介面裡定義的所有方法,而實現抽象類可以有選擇地重寫需要用到的方法,一般的應用裡,最頂級的是介面,然後是抽象類實現介面,最後才到具體類實現。

還有,介面可以實現多重繼承,而一個類只能繼承一個超類,但可以通過繼承多個介面實現多重繼承,介面還有標識(裡面沒有任何方法,如remote介面)和資料共享(裡面的變數全是常量)的作用.

4樓:仲維傳媒

「抽象類」和「介面」的區別如下:

1) 在抽象類中可以寫非抽象的方法,從而避免在子類中重複書寫他們,這樣可以提高**的複用性,這是抽象類的優勢;介面中只能有抽象的方法。

2) 一個類只能繼承一個直接父類,這個父類可以是具體的類也可是抽象類;但是一個類可以實現多個介面。

圖中如果sparrow繼承類bird 類 ,boyin繼承airplane類,sparrow 和boyin想使用同樣的flay方法那麼是沒有辦法實現的,因為類的繼承是單繼承。

如果bird和airplane是介面那麼boyin想使用同樣的flay方法就很簡單了。在寫一個介面讓sparrow和boyin實現這個介面就可以瞭如下圖:

5樓:匿名使用者

抽象方法是必須實現的方法。就象動物都要呼吸。但是魚用鰓呼吸,豬用肺呼吸。

動物類要有呼吸方法。怎麼呼吸就是子類的事了。

現在有很多討論和建議提倡用inte***ce代替abstract類,兩者從理論上可以做一般性的混用,但是在實際應用中,他們還是有一定區別的。抽象類一般作為公共的父類為子類的擴充套件提供基礎,這裡的擴充套件包括了屬性上和行為上的。而介面一般來說不考慮屬性,只考慮方法,使得子類可以自由的填補或者擴充套件介面所定義的方法,就像java王子所說的事件中的介面卡就是一個很好的應用。

用一個簡單的例子,比如說一個教師,我們把它作為一個抽象類,有自己的屬性,比如說年齡,教育程度,教師編號等等,而教師也是分很多種類的,我們就可以繼承教師類而擴充套件特有的種類屬性,而普遍屬性已經直接繼承了下來。

而介面呢~還是拿教師做例子,教師的行為很多,除了和普通人相同的以外,還有職業相關的行為,比如改考卷,講課等等,我們把這些行為定義成無body的方法,作為一個集合,它是一個inte***ce。而教師張三李四的各自行為特點又有不同,那麼他們就可以擴充套件自己的行為body。從這點意義上來說, inte***ce偏重於行為。

總之,在許多情況下,介面確實可以代替抽象類,如果你不需要刻意表達屬性上的繼承的話。

6樓:手機使用者

因為java是單根繼承的,所以能用介面儘量用介面,c++的介面就是通過抽象類實現的

c抽象類和介面的區別,抽象類和介面的區別是什麼?

1抽象類 1 抽象方法只作宣告,而不包含實現,可以看成是沒有實現體的虛方法 2 抽象類不能被例項化 3 抽象類可以但不是必須有抽象屬性和抽象方法,但是一旦有了抽象方法,就一定要把這個類宣告為抽象類 4 具體派生類必須覆蓋基類的抽象方法 5 抽象派生類可以覆蓋基類的抽象方法,也可以不覆蓋。如果不覆蓋,...

java中介面和抽象類的區別是什麼

定義的關鍵字 abstract class inte ce 組成 常量,變數,抽象方法,普通方法,構造方法 全域性常量,抽象方法 許可權 可以是各種許可權 只能是public 關係 抽象類可以實現多個介面 介面不能實現抽象類 使用 子類利用extends 子類利用implements實現介面 涉及的...

介面和抽象類在物件導向程式設計中有什麼作用和意義

介面類似模版 實現介面需實現介面內所有方法 抽象類是類模版 類似介面 但一般 除c 物件導向不支援多繼承 所以出現了介面 php java都有介面 c 沒有 介面和抽象類在物件導向程式設計中有什麼作用和意義 介面就是如果你某個類要引用這個介面,就必須實現這個介面裡面的所有方法。抽象類abstract...