1、抽象類與抽象方法
1.1、版權聲明
文章出處:http://www.cnblogs.com/wuhui369161243/archive/2009/03/29/1424677.html
文章作者:Me 丶紫龍
1.2、內容詳情
朋友曾問我抽象類是否至少要有一個抽象方法,我查了很多資料,結果都是:“抽象類
允許(但不要求)抽象類包含抽象成員”。但是一個抽象類里不寫抽象方法就沒有意義了,
既然如此,還不如直接寫個普通類? 在一個抽象類里可以不聲明抽象方法,這在語法上是
沒問題的,但實際來說,這樣是沒有任何意義的。也就是說,你為什么會選擇寫一個抽象類
呢?當然是為了想某個方法能夠被OVERRIDE,以實現多態。后來查找MSDN 結果如下:
abstract 修飾符可以和類、方法、屬性、索引器及事件一起使用。
在類聲明中使用 abstract 修飾符以指示類只能是其他類的基類。
【抽象類】具有以下特性:
抽象類不能實例化。
抽象類可以包含抽象方法和抽象訪問器。
不能用 sealed 修飾符修改抽象類,這意味著該類不能被繼承。
從抽象類派生的非抽象類必須包括繼承的所有抽象方法和抽象訪問器的實實現。
在方法或屬性聲明中使用 abstract 修飾符以指示此方法或屬性不包含實現。
【抽象方法】具有以下特性:
抽象方法是隱式的 virtual 方法。
只允許在抽象類中使用抽象方法聲明。
因為抽象方法聲明不提供實實現,所以沒有方法體;方法聲明只是以一個分號結束,
并且在簽名后沒有大括號 ({ })。例如:
public abstract void MyMethod();
實現由 overriding 方法提供,它是非抽象類的成員。
在抽象方法聲明中使用 static 或 virtual 修飾符是錯誤的。
除了在聲明和調用語法上不同外,抽象屬性的行為與抽象方法一樣。
在靜態屬性上使用 abstract 修飾符是錯誤的。
在派生類中,通過包括使用 override 修飾符的屬性聲明可以重寫抽象的繼承屬性。
抽象類必須為所有接口成員提供實現。 |
|