• 基础知识(net)<3> virtural , new ,override


    基础整理:

    C# override重写,是指对父类中的虚方法(标记virtual)或抽象方法(标记为abstract)进行重写,实现新的功能,它必须与父类方法的签名完全一致,而且与父类方法的可访问性也必须一致 new隐藏,是指在子类中重新定义一个签名与父类的方法相同的方法,这个方法可以不用new修饰,只是编译时会弹出一个警告信息:如果是有意隐藏,请使用关键字new。

    测试代码:

     1  class Program
     2     {
     3         static void Main(string[] args)
     4         {
     5             BaseClass baseClass=new AClass();
     6            baseClass.HelloWorld();
     7             Console.Read();
     8         }
     9     }
    10 
    11     public class BaseClass
    12 
    13     {
    14         public BaseClass()
    15         {
    16             HelloWorld();
    17         }
    18         public virtual void HelloWorld()
    19         {
    20             Console.WriteLine("BaseClass Say Hello");
    21         }
    22     }
    23 
    24     public class AClass:BaseClass
    25     {
    26         public AClass()
    27         {
    28             HelloWorld();
    29         }
    30         public override  void HelloWorld()
    31         {
    32            Console .WriteLine("AClass Say Hello");
    33         }
    34     }

    这段代码将输出的是

    AClass Say Hello
    AClass Say Hello
    AClass Say Hello

    但如果此时,我们把AClass中的 override改为new 修饰符,在来看看输入:

    BaseClass Say Hello
    AClass Say Hello
    BaseClass Say Hello

    可以看到new就是完全建立一个新的方法,和原来的函数没有任何关系,因此无法使用多态,使用的时候要谨慎。

  • 相关阅读:
    函数
    数组
    类的例题
    异常语句
    类的学习
    for的穷举、迭代
    for循环
    switch case
    反相器,扇入扇出
    T触发器,JK触发器的verilog实现
  • 原文地址:https://www.cnblogs.com/liaotongquan/p/3000651.html
Copyright © 2020-2023  润新知