AI智能
改变未来

C#中重写、重载和隐藏的概念


重写override

用 override 关键字重新实现基类中的虚方法virtual
在运行的过程中,无论通过哪个类型的引用,真正对象类型的方法将被调用

隐藏

隐藏是指用 new关键字重新实现基类中的方法
在运行的过程中通过引用的类型判断应该调用哪个类型的方法

父类Parent

public class Parent{public void NewMethod(){Console.WriteLine($\"{nameof(Parent)}.{nameof(NewMethod)}\");}public virtual void VirtualMethod(){Console.WriteLine($\"{nameof(Parent)}.{nameof(VirtualMethod)}\");}private void PrivateMethod(){//不可被子类访问}}

子类Child

public class Child: Parent{/// <summary>/// 重写虚方法/// </summary>public override void VirtualMethod(){base.VirtualMethod();Console.WriteLine($\"{nameof(Child)}.{nameof(VirtualMethod)}\");}/// <summary>/// 隐藏、new关键词重新实现/// </summary>public new void NewMethod(){//base.NewMethod();Console.WriteLine($\"{nameof(Child)}.{nameof(NewMethod)}\");}}

重载

重载是指多个方法共享同一个名字并且拥有相同的返回值,但是却可以拥有不同的参数列表

public void OverloadMethod(){Console.WriteLine($\"This is OverloadMethod\");}public void OverloadMethod(string input){Console.WriteLine($\"This is OverloadMethod:{input}\");}public void OverloadMethod(int input){Console.WriteLine($\"This is OverloadMethod:{input}\");}public void OverloadMethod(bool input){Console.WriteLine($\"This is OverloadMethod:{input}\");}

示例代码

OverrideNewAndVirtual

赞(0) 打赏
未经允许不得转载:爱站程序员基地 » C#中重写、重载和隐藏的概念