📜  C#方法覆盖(1)

📅  最后修改于: 2023-12-03 15:00:17.533000             🧑  作者: Mango

C#方法覆盖

在 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# 中的方法覆盖,包括其使用方式、注意事项等。在实际开发中,程序员可以灵活运用这一特性,减少代码的重复,提高代码的可维护性。