方法覆盖与重写的区别?
方法覆盖与重写的区别? --------------------编程问答-------------------- 覆盖(也叫重写)是指在派生类中重新对基类中的虚函数(注意是虚函数)重新实现。即函数名和参数都一样,只是函数的实现体不一样。 --------------------编程问答-------------------- class A{protected virtual void M(){}//可重写的方法
}
class B:A{
protected override void M(){}//对基类的A.M方法进行重写那么在调用 时会覆盖
} --------------------编程问答-------------------- 重写:函数名,参数死表,返回值都相同
重载:函数名相同,参数列表不同,与返回值无关 --------------------编程问答-------------------- 楼上都说清楚了
--------------------编程问答-------------------- 你问的是new和虚函数overide的区别的吧,new只是避免了一个编译警告提示,在类的hanle type里其实两个方法都存在,类型为子类是调用子类的方法,类型为父类时调用父类方法,overide的情况,handle type里只有一个方法就是重载后的方法,所以无论引用类型是什么都调用重载后的方法。你可以反编译成中间语言看看区别。 --------------------编程问答-------------------- 重写:函数名,参数死表,返回值都相同
重载:函数名相同,参数列表不同,与返回值无关 --------------------编程问答-------------------- 5楼正解!~ --------------------编程问答--------------------
这个容易理解 --------------------编程问答--------------------
--------------------编程问答-------------------- 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#