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

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

    回到目录

  • 相关阅读:
    PLC 输入输出接线示意图
    光耦的使用
    windows server 2008R2 搭建FTP服务器的步骤:
    C# semaphore的使用
    Multisim模拟 达灵顿管,防反接电路,恒流源电路
    一些芯片资料
    220V交流转5V直流电路详细
    STM32中的模拟IIC使用
    基于C8T6的DA14580蓝牙方案
    基本元件实验:继电器
  • 原文地址:https://www.cnblogs.com/lori/p/2394075.html
Copyright © 2020-2023  润新知