C 學習之介面和抽象類

2021-07-05 03:58:22 字數 1805 閱讀 6031

堅持 成長 每日一篇

一,介面和抽象類的相同點

1.抽象類和介面都包含可以由派生類繼承的成員。

2.介面和抽象類都不 能直接例項化,但可以宣告這些型別的變數。

3.可以宣告介面和抽象型別的變數,變數可以指向派生類(繼承介面或抽象類的型別)的物件,但是變數不能訪問派生類的其他成員(函式或方法)

二,介面和抽象類的區別

1.派生類只能繼承乙個抽象類,但是可以繼承多個介面

2.抽象類可以擁有函式體的非抽象方法,抽象方法必須在派生類種實現,出發派生類也是抽象的

介面成員必須都在使用介面的類上實現,他們沒用函式體。

介面成員可以在使用該介面的抽象類上以抽象方法的方式實現

3.介面成員都是共有的,但是抽象成員確可以是私有的,受保護的,內部的

4.介面不能包含字段,建構函式,析構函式、靜態成員或常量

三,兩者的作用

抽象類主要用作物件系列的基類,共享某些主要特性,例如,共同的目的和結構。 介面則主要用於類,這些類在基礎水平上有所不同,但仍可以完成某些相同的任務。

四,介面成員的定義與類成員的定義相似,但有幾個重要的區別:

1.不允許使用訪問修飾符(public、private、protected或internal),所有的介面成員都是公共的。介面成員不能包含**體。

2.介面不能定義字段成員。

3.介面成員不能用關鍵字static、virtual、abstract或sealed來定義。

4.型別定義成員是禁止的。

5.但要隱藏繼承了基介面的成員,可以用關鍵字 new 來定義它們

6.在介面中定義的屬性可以定義訪問塊 get 和 set 中的哪乙個能用於該屬性(或將它們同時用於該 屬性)

7.繼承乙個實現給定介面的基類,就意味著派生類隱式地支援這個介面

1.在介面中定義的屬性可以定義訪問塊 get 和 set 中的哪乙個能用於該屬性(或將它們同時用於該 屬性)

inte***ce

imyinte***ce

}

2.實現介面的類必須包含該介面所有成員的實現**,且必須匹配指定的簽名(包括匹配指定的 get 和 set 塊),並且必須是公共的。

public

inte***ce imyinte***ce

public

class myclass : imyinte***ce

public

void

dosomethingelse()

}

3.要隱藏繼承了基介面的成員,可以用關鍵字 new 來定義它們,例如:

inte***ce

imybaseinte***ce

inte***ce

imyderivedinte***ce : imybaseinte***ce

4.可以使用關鍵字 virtual 或 abstract 來實現介面成員,但不能使用 static 或 const。還可以在基類 上實現介面成員

public

inte***ce imyinte***ce

class mainclass:imyinte***ce

public

virtual

void

dosomething ()

public

void

dosomethingelse ()

}abstract class aclass : imyinte***ce

c 介面,抽象類學習

說明 介面可以包含方法 屬性 索引器 和事件作為成員,但是並不能設定這些成員的具體值。也就是說,只能定義,不能那個給他裡面定義的東西賦值。介面具有以下特性。c 中宣告介面時,使用inte ce關鍵字 修飾符 inte ce 介面名稱 繼承的介面列表 介面內容 說明 1.宣告介面時,除inte ce關...

PHP學習之抽象類和介面

抽象類 可以是空類,不能建立物件,不能例項化,只能被繼承 abstract class absfirst 第乙個常量是 self abscl.介面1 可以是空的介面 不能定義變數 不能定義其他成員方法 inte ce intfirst 介面2 inte ce intsecond 實現類 定義的抽象方...

C 抽象類和介面

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