C#接口及抽象類以及虛方法

C#接口及抽象類以及虛方法
一.接口
一個比喻:
衆所周知,我們的電腦,需要連接外接設備,比如U盤,需要通過USB連接,那麼問題來了,世界上生產U盤的廠家有千萬個,怎麼保證他們生產的U盤可以插到我們的電腦上呢,他們定義了一個規則,規定了usb接口的結構大小,這樣,無論是哪個廠家生產的U盤,都必須按照這個規則生產,這就是接口的定義。
接口,在表面上是由幾個沒有主體代碼的方法定義組成的集合體,有唯一的名稱,可以被類或其他接口所實現(或者也可以說繼承)。它在形式上可能是如下的樣子:

如上圖,我們定義了一個動物的接口,它有吃和叫兩種方法,那麼如果我們再聲明一個類,繼承這個IAnimal接口,那麼就必須實現這兩個方法

由此我們可以知道,接口定義了一組規則,它規定了繼承接口的類或接口必須實現它所定義的規則,即接口的方法。也就是「如果你是。。。,那麼必須能。。。」。同時,它還是同類型事物的抽象體現。比如上文的例子,dog是animal的一種,pig也是animal的一種,他們都有eat,和shut的方法。
二.抽象類
類是一個具有相同特徵和行爲的抽象,而抽象類(class 前加上 abstract)沒有指出行爲的具體細節,而由他的子類去實現相應的行爲。
注意:一個非密封類(密封類使用 sealed 修飾)可以派生子類,子類可以是抽象類或非抽象類。
代碼示例:

三.虛方法
•用virtual修飾的方法叫做虛方法
•虛方法可以在子類中通過override關鍵字來重寫
•常見的虛方法:ToString() Equals
代碼示例如下

虛方法與抽象方法最大的區別:虛方法要有方法體,而抽象方法不允許有方法體。
四.接口和抽象類的區別
抽象類和接口的區別:

1、抽象類中可以有實現成員(非抽象方法),而接口中的方法只有聲明沒有實現;

2、抽象類中可以有字段,接口中不能有字段,但可以有屬性;

3、抽象類的成員可以使用公有或其他修飾符,接口中成員是隱式公有的,不需要修飾;

相關文章
相關標籤/搜索
每日一句
    每一个你不满意的现在,都有一个你没有努力的曾经。