• C#中的隐藏方法


    在C#中要重写基类的方法,C#提倡在基类中使用virtual来标记要被重写的方法,在子类也就是派生类中用override关键字来修饰重写的方法。

    要是项目中前期考虑不足,我没有在基类(ClassA)中写入Amethod方法,但是派生类(ClassB)中由于需求早早的写完了Amethod方法,并且又有许多类(ClassC,ClassD..)又继承了派生类(ClassB),并且重写了Amethod方法。当这个时候我又想向最初的基类中(ClassA)添加Amethod方法,这就是存在一个潜在的错误,C#语法会在程序编译的时候提示出警告,需要给派生类(ClassB)重写的方法添加一个关键字“New”,以表示它会隐藏基类中的Amethod方法。

    为什么在java中就不需要这么麻烦呢?(在java中,如果不base.Amethod,那就直接认为调用最新的子类中的重写方法。)

    那是因为在java中,所有的函数都是虚拟的,可被重写的。但这无疑降低了性能。

    看代码理解:

     1 public class People
     2     {
     3         public People()
     4         {
     5             Console.WriteLine("father' custor");
     6         }
     7         public void Eat()
     8         {
     9             Console.WriteLine("father eat");
    10         }
    11     }
    12     class Man : People
    13     {
    14         private int age;
    15         public int Age
    16         {
    17             get 
    18             {
    19                 Console.WriteLine("age get");
    20                 return age;
    21             }
    22             set
    23             {
    24                 Console.WriteLine("age set = ",value);
    25                 age = value;
    26             }
    27         }
    28         public Man()
    29         {
    30             Console.WriteLine("son's custor");
    31         }
    32         public void WhoEat()
    33         {
    34             base.Eat();
    35         }
    36         
    37         public new void Eat()
    38         {
    39             base.Eat();
    40             Console.WriteLine("son eat!");
    41         }
    42     }
    43 
    44     class Children :Man
    45     {
    46         public new void Eat() { Console.WriteLine("children eat!"); }
    47     }
  • 相关阅读:
    一类涉及矩阵范数的优化问题
    MATLAB小实例:读取Excel表格中多个Sheet的数据
    深度多视图子空间聚类
    具有协同训练的深度嵌入多视图聚类
    结构深层聚类网络
    一种数据选择偏差下的去相关聚类方法
    shell编程基础二
    shell编程基础一
    如何处理Teamcenter流程回退情况
    汽车行业数字化车间解决方案
  • 原文地址:https://www.cnblogs.com/forbetter223/p/10607295.html
Copyright © 2020-2023  润新知