C#中的重载和重写
前⾯在C#虚函数的⽂章⾥提到了重写(override), 虚函数和重写实现了⾯向对象语⾔在运⾏阶段的多态性, ⽽重载实现了在编译阶段的多态性.
重写(override)
重写指的是当⽗类中有抽象函数或虚函数时, 在⼦类中实现或重新实现了这些函数, 就完成了对⽗类函数的重写, 当对象的实例类为⼦类时,调⽤的函数是⼦类中重写的函数. 重写使⽤关键字override, 要求重写函数的函数名, 返回值, 参数列表与被重写的函数完全相同.
代码来了!
public class GoodClass
writeline函数{
public virtual void GoodFunc()
{
Console.WriteLine("This is a good function");
}
}
public class NiceClass : GoodClass
{
public override void GoodFunc()
{
Console.WriteLine("This is a nice function");
}
}
public abstract class GreatClass
{
public abstract void GreatFunc();
}
public class FineClass : GreatClass
{
public override void GreatFunc()
{
Console.WriteLine("Have a good day");
}
}
重载
重载指的是在⼀个类中, 有⼀系列相同函数名, 不同参数列表, 不同返回类型(⾮强制要求)的函数, 在编译时, 根据传参情况来选择最佳的的函数. 当两个函数函数名相同, 参数列表相同, 只有返回值不同时会有报错, 此时不构成重载. 参数列表顺序不同也不构成重载.
代码来了!
public class GoodClass
{
private void GoodFunc(int a){}
private void GoodFunc(int a,int b){}
private void GoodFunc(double c){}
private int GoodFunc(int a,double b)
{
return a;
}
}
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论