重写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}");
}