zoukankan      html  css  js  c++  java
  • overload override Virtual new区别

    overload:同一个类中,相同名称的方法,它们或有不同的参数个数或有不同的参数类型。用于同一类中同名方法但参数个数或类型不同的实现,也就是让方法有不同签名的版本。通过参数的不同来区分。

        public string s()
    {
    return "";
    }
    public int s()//报错,已定义过一个名为“s”具有相同方法签名的方法
    {
    return 1;
    }
      public int s(string t)//正确,方法签名不同
      {
        return 1;
      }

    Override:方法覆盖。在子类中定义某方法与其父类有相同的名称和参数,子类的对象使用这个方法时,将调用子类中的定义,对它而言,父类中的定义如同被"屏蔽"了。此关键字不可以用于重写非虚方法和静态方法,与其配套使用的关键字是Virtual、abstract、Override。与此同时,Override方法还不可以修改Virtual方法的可访问性,Override方法和Virtual方法必须具有相同的访问修饰符,不能使用修饰符 new、static、virtual 或 abstract 来修改 override 方法。 如果方法是Virtual的,然后子类使用了override, 编译器就生产额外的代码。然后,在运行的时候,进行检测,看对象属于哪个类,然后调用这个类的方法。

    Virtual: Virtual 关键字允许在派生类中重写这些对象,默认情况下,方法是非虚拟的,不可以重写非虚方法,virtual关键字不可以与static、abstract、private、override一起使用。Virtual关键字又是和override紧密不可分的,如果要实现Virtual方法就必须要使用override或new关键字(new和override产生的机理不同)。

    总结:New关键字主要用来区别派生类和基类同名方法的选择问题,通过隐藏基类方法,达到使编译器调用正确的方法的目的。Override主要用来对基类的方  
                   法和虚方法进行重写。



  • 相关阅读:
    Web API总结
    @Html.Raw() 方法输出带有html标签的字符串
    jQuery
    图与树基础-完全图的判定
    图和树基础-蒜头君旅行
    PAT乙级1008
    PAT乙级1007
    PAT乙级1005
    PAT乙级1001
    前端工程化-webpack简介(一)
  • 原文地址:https://www.cnblogs.com/smailxiaobai/p/2256966.html
Copyright © 2011-2022 走看看