C#中重载重写和覆盖的定义与区别

2020-01-05 09:53:50王旭

一、重载

  1、重载示意

   重载(Overload)是重新加载的意思,指的是同一个类中同名,但是参数列表不同的方法组(返回值不能区别函数是否重载),重载没有关键字。通俗点说重载是对内存中同一个类中的函数或方法进行重新加载的意思。

  2、发生条件

   必须发生在一个类中,函数名相同,参数类型或者个数不同构成重载,与返回类型无关。

如:


Public class Name 
{ 
  Public string GetName(string username) 
  { 
    Return username; 
  } 
Public int GetName(int usercount) 
  { 
    Return usercount; 
  } 
}

二、重写

   1、示意

    重写(Override)指子类修改父类中某个函数的函数体,需要重写的父类中的函数必须是由virtual、abstract 或override标注的,不能重写非虚方法或静态方法。

    Override是在继承的时候,如果你写的函数与要继承的函数函数特征(函数特征包括函数名,参数的类型和个数)相同,那么,加上这个关键字,在使用这个子类的这个函数的时候就看不见父类(或超类)的函数了,它被覆盖掉了。

   2、发生条件

    必须发生在基类和派生类中,基类函数必须用virtual、abstract 或override修饰,派生类用override修饰。