欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

解析abstract與override究竟可不可以同時(shí)使用

 更新時(shí)間:2013年05月14日 11:30:22   作者:  
本篇文章是對abstract與override究竟可不可以同時(shí)使用進(jìn)行了詳細(xì)分析介紹,需要的朋友參考下

一個(gè)屬性或方法可以同時(shí)被abstract 和override 修飾嗎?我的一個(gè)同事這樣問我。我最初的反應(yīng)是:“當(dāng)然不可以”,但是事實(shí)上證明的確是可以一起修飾的。

對于這個(gè)問題,我認(rèn)真的思考了下,這種方式雖然少見,但是卻是合法的甚至還有點(diǎn)意義。

假設(shè)我們有一個(gè)非常大的,復(fù)雜的類型,讓我們叫他”Thingy”:

abstract class Thingy
{
  public virtual string Name { get { return ""; } }
}

當(dāng)然Thingy將會(huì)被很多子類集成,并且大部分子類都有一個(gè)默認(rèn)的””的Name,或者是null,

或者是其他什么的。關(guān)鍵點(diǎn)并不在這個(gè)Name究竟有什么值,而是對于大部分在類型層次結(jié)構(gòu)中的類都

有一個(gè)有意義的默認(rèn)的名字。

但是,假如有另一個(gè)抽象的thingy,F(xiàn)robThingy,它總是有一個(gè)非空(non-empty)的名字.為了防止

FrobThingy的子類意外的調(diào)用thingy的實(shí)現(xiàn),我們可以這樣:

abstract class FrobThingy : Thingy
{
  public abstract override string Name { get; }
}

這樣,假如你有一個(gè)子類BigFrobThingy,你就不得不自己提供Name屬性的實(shí)現(xiàn)了,因?yàn)槿绻悴惶峁┑?/P>

話,你就無法通過編譯了。

相關(guān)文章

最新評論