1.重载(overload)
用于同一类中或是父子关系类中。它提供了一种机制,相同的函数名通过不同的返回值类型及参数来表示区分的机制。
2.覆写(override)
使用override修饰符修饰方法、属性、索引和事件。它不能重写非虚拟方法或静态方法,重写的基方法必须是虚拟的、抽象或者重写的。也就是说,用override重写的基方法的必须是virtual、abstract或者override。
3.本质区别:
覆写(override)的基方法和覆写方法两个函数的函数特征相同;重载(overload)的两个函数函数名虽然相同,但是函数特征不同。
重载(overload)
class Play : Word
{
public new virtual void Run()
{
Console.WriteLine("重载父类Run的无参方法");
}
public new virtual void Say()
{
Console.WriteLine("我能说会道,我是父类");
}
public new virtual void Drink()
{
Console.WriteLine("因为我是父类,所以我会龙吸水");
}
而代码中的word就是提供了一种机制。
覆写(override)
public override void Work()
{
Console.WriteLine("努力工作,子类继承");
}
覆写不能重写非虚拟方法和静态方法,重写的基方法必须是虚拟的、抽象或者重写的。上方代码则为抽象类。
C#中overload与override的区别详解

本文探讨了C#中的重载(overload)和覆写(override)概念。重载允许在同一类或继承类中使用相同函数名但通过不同的参数列表进行区分。而覆写使用`override`关键字,仅能应用于虚拟、抽象或已重写的基方法。两者的关键区别在于,覆写要求函数特征完全一致,而重载则依赖于参数列表的不同。
1251

被折叠的 条评论
为什么被折叠?



