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