zoukankan      html  css  js  c++  java
  • 基础知识(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就是完全建立一个新的方法,和原来的函数没有任何关系,因此无法使用多态,使用的时候要谨慎。

  • 相关阅读:
    Leetcode 204. Count Primes
    Leetcode 263. Ugly Number
    Leetcode 202. Happy Number
    Leetcode 258. Add Digits
    Leetcode 23. Merge k Sorted Lists
    BAT 批处理脚本教程
    入门训练 序列求和
    JAVA学习:方法
    大小之差
    java中length,length(),size()区别
  • 原文地址:https://www.cnblogs.com/liaotongquan/p/3000651.html
Copyright © 2011-2022 走看看