将不确定变成确定~类中的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,如需转载请自行联系原博主。

目录
相关文章
|
11月前
|
Java Android开发
构造器里面的super()有什么用?到底写不写?
平时写的单独一个类如果没有直接继承父类就是直接继承的Object,有父类就是间接继承的Object,因为父类会继承Object,java的所有类都是Object的子类,哪怕不写super(),也会默认调用的父类的空构造器。
76 0
|
Java 编译器
重写,重写规则 Super 关键字的使用,重写与重载之间的区别 , @override有什么用,以及加不加@override有什么区别
重写,重写规则 Super 关键字的使用,重写与重载之间的区别 , @override有什么用,以及加不加@override有什么区别
195 0
|
Java
java方法重写(Override)
1.重写的概念 重写是子类对父类(或爷爷及以上类)的允许访问的方法的实现过程进行重新编写, 返回值和形参都不能改变。即外壳不变,核心重写! 重写的好处在于子类可以根据需要,定义特定于自己的行为。 也就是说子类能够根据需要实现父类的方法。 2.实现一个简单的Demo 父类:
86 0
java方法重写(Override)
|
Java 数据安全/隐私保护
第12篇:Java 的访问修饰符(public、protected、private)、封装、继承
🍀public: 在所有类中都是可见的 🍀protected: 仅在自己的包中、自己的子类中可见 🍀package-private(没有修饰符): 仅在自己的包中可见 🍀private: 仅在自己的类中可见
229 0
第12篇:Java 的访问修饰符(public、protected、private)、封装、继承
|
前端开发 JavaScript
class-使用extends实现子类继承父类
class-使用extends实现子类继承父类
|
Web App开发 自然语言处理 C++
学习C++,学习类,那override和final你用过没?
学习C++,学习类,那override和final你用过没?
84 0
学习C++,学习类,那override和final你用过没?
|
Java
【JavaSE】方法重写/覆盖(override)
【JavaSE】方法重写/覆盖(override)
100 0
【JavaSE】方法重写/覆盖(override)
继承、super、重写
整体与部分(has a关系)例如:球队与球员 继承 注意细节: 1.子类可以继承父类的成员,但是千万不要为了减少重复代码去继承,只有正真存在继承的时候才去继承 2.
608 0