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