📅  最后修改于: 2023-12-03 15:00:17.533000             🧑  作者: Mango
在 C# 中,方法覆盖(Method Overriding)是一种允许子类修改父类方法行为的机制。当一个子类的方法与其父类的方法名称、返回类型、参数列表完全相同时,该方法即为覆盖方法。
override
关键字对要覆盖的方法进行标记。virtual
关键字修饰,子类方法也必须使用 override
关键字进行修饰。以下是一个简单的示例,说明如何在子类中覆盖父类方法:
class Animal {
public virtual void MakeSound(){
Console.WriteLine("Animal makes a sound");
}
}
class Dog : Animal {
public override void MakeSound(){
Console.WriteLine("Dog barks");
}
}
class Program {
static void Main(string[] args){
Animal myAnimal = new Animal();
Animal myDog = new Dog();
myAnimal.MakeSound();
myDog.MakeSound();
}
}
/*
输出结果如下:
Animal makes a sound
Dog barks
*/
在子类方法中,如果需要使用父类被覆盖的方法,可以使用 base
关键字进行调用。
class Animal {
public virtual void MakeSound(){
Console.WriteLine("Animal makes a sound");
}
}
class Dog : Animal {
public override void MakeSound(){
base.MakeSound();
Console.WriteLine("Dog barks");
}
}
class Program {
static void Main(string[] args){
Animal myDog = new Dog();
myDog.MakeSound();
}
}
/*
输出结果如下:
Animal makes a sound
Dog barks
*/
在实际使用中,方法覆盖能够帮助程序员避免代码的重复,在子类中通过修改父类方法的实现来达到自己的需求。
本文介绍了 C# 中的方法覆盖,包括其使用方式、注意事项等。在实际开发中,程序员可以灵活运用这一特性,减少代码的重复,提高代码的可维护性。