将不确定变成确定~类中的override
原创
©著作权归作者所有:来自51CTO博客作者仓储大叔的原创作品,请联系作者获取转载授权,否则将追究法律责任
回到目录
说到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
意思是说,如果是不希望保留基类的同名属性,请你用new关键进行说明一下,也好叫我知道呀,呵呵。
当然,运行的结果就是基类的Msg属性被覆盖了,如果就是:
呵呵,有时我们模棱两可的东西可能成为一个代码,一个程序,甚至一个项目失败的原因之一,所以请把不确定变成确定吧!
回到目录
作者:仓储大叔,张占岭,
荣誉:微软MVP