C#中什么时候选择用重写和重载?为什么用?有什么区别?
发布网友
发布时间:2023-06-21 14:26
我来回答
共4个回答
热心网友
时间:2024-08-15 11:43
多态是一种概念,也是一种思想
重载,重写只是多态的体现。
重载简言之是方法名相同,但是方法的参数不同
重载一般发生在同一个类里。
重写顾名思义,是重新设计了方法的实现,这个“重新设计”的的基础是方法名和参数完全一致,但是内部实现体不一样。
重写一般发生在父类和子类之间,一般父类定义一个虚方法或抽象方法,子类根据具体情况“重写”其中的实现。
热心网友
时间:2024-08-15 11:44
重载表示改写该函数,比如重载+号运算符,让他具有乘法的功能,2+3=6
但是重载之后,他的运算优先级还是不会改变的,5-2+3=9
而重写表示完全改变这个函数,如果重写+号运算符,让他具有乘法的功能,2+3=6
同时,他的优先级你可以让他改变为最高,这样的话5-2+3=-1
:)
热心网友
时间:2024-08-15 11:44
再拿动物界作例子。
父类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+"'
");}
热心网友
时间:2024-08-15 11:45
重写是发生在父类与子类之间的关系。具体来讲就是子类可以重写父类的现有的方法。它要求子类的方法名称及参数必须与父类完全一致。比如吃饭,父亲可以吃两碗面,孩子同样也是吃面,却只能吃一碗。
重载则主要是发生在同一个类当中的,它通过多个名称相同的方法,但方法参数不相同,或者方法返回类型不相同来加以区别。其中,方法参数不相同包括以下几种情况:参数的个数不相同,参数的类型不相同,参数的对应位置不相同。需要说明的是,重载同样可以应用到父类与子类当中。即子类重载了父类的方法。