C#中什么时候选择用重写和重载?为什么用?有什么区别?

如题所述

重载表示改写该函数,比如重载+号运算符,让他具有乘法的功能,2+3=6
但是重载之后,他的运算优先级还是不会改变的,5-2+3=9

而重写表示完全改变这个函数,如果重写+号运算符,让他具有乘法的功能,2+3=6
同时,他的优先级你可以让他改变为最高,这样的话5-2+3=-1

:)
温馨提示:内容为网友见解,仅供参考
第1个回答  2012-01-09
ps:我假期有1个计划,打算坐火车去南京旅游
重写就是 我去西藏旅游了,
重载就是我坐飞机去的南京
第2个回答  2012-01-09
再拿动物界作例子。
父类Animal ,有个方法叫virtual void Run()
{console.writeline("跑起来!");}
子类Cat继承Animal
重写了Run,override void Run(){console.writeline("飞快的跑起来!");}
子类Dog继承了Animal同样不用重写,因为Dog就表现为跑起来,不用重写。
Dog类里面有个方法叫private void Eat(){console.writeline("什么都吃!")};
然后再写个重载方法叫private void Eat(object obj){console.writeline("{0}","我只吃'"+object+"' ");}本回答被提问者采纳
第3个回答  2012-01-09
重写是发生在父类与子类之间的关系。具体来讲就是子类可以重写父类的现有的方法。它要求子类的方法名称及参数必须与父类完全一致。比如吃饭,父亲可以吃两碗面,孩子同样也是吃面,却只能吃一碗。

重载则主要是发生在同一个类当中的,它通过多个名称相同的方法,但方法参数不相同,或者方法返回类型不相同来加以区别。其中,方法参数不相同包括以下几种情况:参数的个数不相同,参数的类型不相同,参数的对应位置不相同。需要说明的是,重载同样可以应用到父类与子类当中。即子类重载了父类的方法。

参考资料:http://hi.baidu.com/nbwd/blog/item/0144adc3a0823850b219a848.html

相似回答