开发者社区> mcy247> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

将不确定变成确定~类中的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会把它当成是一种警告
 

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

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

image

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

本文转自博客园张占岭(仓储大叔)的博客,原文链接:将不确定变成确定~类中的override,如需转载请自行联系原博主。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Java的Override和Overload
Java的Override和Overload
56 0
Java-override重写与overload重载
重载(overload) 在同一个类中,方法名相同,参数列表不同(参数个数,参数顺序,参数类型) 仅仅返回类型不同不足以称为方法的重载(重载与方法返回类型无关) 仅仅参数变量名称不同是不可以的 重写(override) 子类继承父类,方法名相同,参数列表相同,权限修饰符作用范围要大于父类的范围c.
953 0
基类虚方法virtual,以及override虚方法解惑
上班时间了了解下。  下面创建一个基类    public class person { public string name { get; set; } public int age { get; set; } public strin...
853 0
Java基本注解分析,为什么要使用@Override
<div class="markdown_views"> <h1 id="override">@Override</h1> <p>标注在子类方法中,表示此方法是覆盖父类的重载方法,具有强制性,即如果父类没有此方法,则会编译出错。那它到底有什么用呢?让我们来看这一需求场景:</p> <blockquote> <p>假如我们利用面向对象的多态特性特性编程,有子类Sa,Sb继
2516 0
Java @override报错的解决方法
有时候Java的Eclipse工程换一台电脑后编译总是@override报错,把@override去掉就好了,但不能从根本上解决问题,因为有时候有@override的地方超级多。 这是jdk的问题,@Override是JDK5就已经有了,但是不支持对接口的实现,认为这不是Override而报错。
655 0
Java - override
Java中的重写 以下为代码举例 /* * For test override * 2014-10-27 */ public class JavaTest { public static void main(String args[]){ Kid Tom = new Kid(); Tom.
700 0
c# override用法(转)
转自下面博客 http://blog.csdn.net/dunksong/article/details/5409135 override的最关键一点: 要扩展或修改继承的方法、属性、索引器或事件的抽象实现或虚实现,必须使用 override 修饰符。
958 0
+关注
mcy247
做自己的太阳 无需凭借谁的光
1070
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载