当前位置:编程学习 > C#/ASP.NET >>

方法覆盖与重写的区别?

方法覆盖与重写的区别? --------------------编程问答--------------------  覆盖(也叫重写)是指在派生类中重新对基类中的虚函数(注意是虚函数)重新实现。即函数名和参数都一样,只是函数的实现体不一样。 --------------------编程问答-------------------- class A{
  protected virtual void M(){}//可重写的方法
}
class B:A{
  protected override void M(){}//对基类的A.M方法进行重写那么在调用 时会覆盖
} --------------------编程问答-------------------- 重写:函数名,参数死表,返回值都相同

重载:函数名相同,参数列表不同,与返回值无关 --------------------编程问答-------------------- 楼上都说清楚了

--------------------编程问答-------------------- 你问的是new和虚函数overide的区别的吧,new只是避免了一个编译警告提示,在类的hanle type里其实两个方法都存在,类型为子类是调用子类的方法,类型为父类时调用父类方法,overide的情况,handle type里只有一个方法就是重载后的方法,所以无论引用类型是什么都调用重载后的方法。你可以反编译成中间语言看看区别。 --------------------编程问答-------------------- 重写:函数名,参数死表,返回值都相同

重载:函数名相同,参数列表不同,与返回值无关 --------------------编程问答-------------------- 5楼正解!~ --------------------编程问答--------------------
引用 1 楼 wuyq11 的回复:
 覆盖(也叫重写)是指在派生类中重新对基类中的虚函数(注意是虚函数)重新实现。即函数名和参数都一样,只是函数的实现体不一样。

这个容易理解 --------------------编程问答--------------------
引用 1 楼 wuyq11 的回复:
覆盖(也叫重写)是指在派生类中重新对基类中的虚函数(注意是虚函数)重新实现。即函数名和参数都一样,只是函数的实现体不一样。

引用 5 楼 hshxf 的回复:
你问的是new和虚函数overide的区别的吧,new只是避免了一个编译警告提示,在类的hanle type里其实两个方法都存在,类型为子类是调用子类的方法,类型为父类时调用父类方法,overide的情况,handle type里只有一个方法就是重载后的方法,所以无论引用类型是什么都调用重载后的方法。你可以反编译成中间语言看看区别。
--------------------编程问答-------------------- new和override的区别~ --------------------编程问答-------------------- new只是避免了一个编译警告提示,在类的hanle type里其实两个方法都存在,类型为子类是调用子类的方法,类型为父类时调用父类方法,overide的情况,handle type里只有一个方法就是重载后的方法,所以无论引用类型是什么都调用重载后的方法。你可以反编译成中间语言看看区别 --------------------编程问答-------------------- override,子類重寫父類,方法名,参数,返回类型都要一样
overLoad ,方法名相同,参数不能相同
--------------------编程问答-------------------- 没区别 --------------------编程问答-------------------- 学习 接分 --------------------编程问答-------------------- 有的理解了... --------------------编程问答-------------------- 是5楼的答案吧!
我也觉得是! --------------------编程问答-------------------- New是对多态的一种污染 --------------------编程问答-------------------- baidu  and  Google......好多例子 --------------------编程问答-------------------- 你想问重写也重载的区别吧,重写就是把父类中的方法覆盖掉,重载就一个类里面可以写好几个名称相同的方法,每个方法的不同点就是参数不一样。通俗的讲重写就是后浪吧前浪拍死在沙滩上,重载就是兄弟几个,各不相同 --------------------编程问答-------------------- 好久没有看书了,你查询一下virtual与override 这两个关键词的意思,应该对你有帮助 --------------------编程问答-------------------- 说的已经差不多...

编译时的多态:

系统在编译时,根据传递的参数个数、类型等信息决定实现何种操作,通过重载实现.
--------------------编程问答-------------------- 重写和覆盖有区别吧?

重写: 函数名,参数,返回类型都一样 ,只是方法实现不一样

覆盖: 函数名,参数一样.但是返回类型就不一定相同啦


public class A
{
   public A(){}
   public int ABC(int i)
   {
     return i+10;
   }

   public virtual int BCD(int i)
   {
      return i + 20;
   }
}

public class B : A
{
   public B(){}
   public new string ABC(int i)  //可以修改返回类型
   {
     return (i+10).ToString();
   }

   public override int BCD(int i)
   {
      return i + 30;
   }
}
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,