将不确定变成确定~类中的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

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

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

目录
相关文章
|
29天前
|
Java
被final修饰的类的所有方法都不能被重写吗
在Java中,被`final`修饰的类不能被继承,因此其所有方法也不能被重写。`final`关键字确保了类的定义和行为不会被子类改变。
70 1
|
2月前
|
Java 程序员 编译器
【Java】继承、super、final、子类构造方法
【Java】继承、super、final、子类构造方法
42 0
|
Java Android开发
构造器里面的super()有什么用?到底写不写?
平时写的单独一个类如果没有直接继承父类就是直接继承的Object,有父类就是间接继承的Object,因为父类会继承Object,java的所有类都是Object的子类,哪怕不写super(),也会默认调用的父类的空构造器。
122 0
|
Java
java方法重写(Override)
1.重写的概念 重写是子类对父类(或爷爷及以上类)的允许访问的方法的实现过程进行重新编写, 返回值和形参都不能改变。即外壳不变,核心重写! 重写的好处在于子类可以根据需要,定义特定于自己的行为。 也就是说子类能够根据需要实现父类的方法。 2.实现一个简单的Demo 父类:
127 0
java方法重写(Override)
|
Java 数据安全/隐私保护
第12篇:Java 的访问修饰符(public、protected、private)、封装、继承
🍀public: 在所有类中都是可见的 🍀protected: 仅在自己的包中、自己的子类中可见 🍀package-private(没有修饰符): 仅在自己的包中可见 🍀private: 仅在自己的类中可见
316 0
第12篇:Java 的访问修饰符(public、protected、private)、封装、继承
|
前端开发 JavaScript 开发者
class-使用 extends 实现子类继承父类|学习笔记
快速学习 class-使用 extends 实现子类继承父类
119 0
|
存储 Java 编译器
Java面向对象——封装、构造方法、private、static
Java面向对象——封装、构造方法、private、static
399 0
Java面向对象——封装、构造方法、private、static
|
Web App开发 自然语言处理 C++
学习C++,学习类,那override和final你用过没?
学习C++,学习类,那override和final你用过没?
109 0
学习C++,学习类,那override和final你用过没?
|
前端开发 JavaScript
class-使用extends实现子类继承父类
class-使用extends实现子类继承父类