將不確定變成確定~類中的override
說到override大家都知道,它是復寫,子類去復寫父類的方法與屬性,是,沒錯,今天主要就說這個復寫,如果不復寫會有什么結果,有沒有想過,呵呵
來和我做個demo吧!
1 abstract class Parent 2 { 3 public virtual string Msg { get; set; } 4 } 5 6 7 class Sub : Parent 8 { 9 public override string Msg { get; set; } 10 11 }
在另外一個類中為sub這個屬性賦值,返回值為它的基類parent
static Parent display_message { get { return new Sub { Msg = "ok" }; } }
最后輸出這個Parent類型的屬性display_message ,結果是:
沒有問題,在給子類賦值時,父類的屬性也被賦上了,試想一下,如果我們偏不用override復寫,直接用與主類同名的屬性呢
1 class Sub : Parent 2 { 3 public string Msg { get; set; } 4 5 }
編譯不會出錯,但VS會把它當成是一種警告
意思是說,如果是不希望保留基類的同名屬性,請你用new關鍵進行說明一下,也好叫我知道呀,呵呵。
當然,運行的結果就是基類的Msg屬性被覆蓋了,如果就是:
呵呵,有時我們模棱兩可的東西可能成為一個代碼,一個程序,甚至一個項目失敗的原因之一,所以請把不確定變成確定吧!


浙公網安備 33010602011771號