用 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 { /// /// 重写虚方法 /// public override void VirtualMethod() { base.VirtualMethod(); Console.WriteLine($"{nameof(Child)}.{nameof(VirtualMethod)}"); } /// /// 隐藏、new关键词重新实现 /// 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