将不确定变成确定~类中的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 ,结果是:

image

没有问题,在给子类赋值时,父类的属性也被赋上了,试想一下,如果我们偏不用override复写,直接用与主类同名的属性呢

1  class Sub : Parent
2    {
3        public  string Msg { get; set; }
4 
5  }

 

编译不会出错,但VS会把它当成是一种警告
image 

意思是说,如果是不希望保留基类的同名属性,请你用new关键进行说明一下,也好叫我知道呀,呵呵。

当然,运行的结果就是基类的Msg属性被覆盖了,如果就是:

image

呵呵,有时我们模棱两可的东西可能成为一个代码,一个程序,甚至一个项目失败的原因之一,所以请把不确定变成确定吧!

回到目录

posted @   张占岭  阅读(921)  评论(1编辑  收藏  举报
编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 记一次.NET内存居高不下排查解决与启示
点击右上角即可分享
微信分享提示