C#中的virtual、override
时间: 2023-07-10 18:04:48 浏览: 106
在 C# 中,virtual 和 override 都是关键字,用于实现面向对象编程中的多态性。
首先,virtual 关键字用于定义一个虚拟方法,即可以被子类重写的方法。使用 virtual 关键字标记的方法可以在父类中被定义,但是在子类中也可以被重新实现。
例如:
```
public class Animal
{
public virtual void Speak()
{
Console.WriteLine("I am an animal.");
}
}
public class Dog : Animal
{
public override void Speak()
{
Console.WriteLine("I am a dog.");
}
}
```
在上面的代码中,Animal 类中的 Speak() 方法被标记为 virtual,因此它可以在 Dog 类中被重写。在 Dog 类中,我们使用 override 关键字来重写 Speak() 方法。
在运行时,如果我们创建一个 Dog 实例并调用 Speak() 方法,将输出“我是一只狗”。
```
Dog myDog = new Dog();
myDog.Speak(); // 输出 "I am a dog."
```
注意:只有 virtual 方法才能被重写。
另一方面,override 关键字用于在子类中重写父类中已经定义的虚拟方法。重写方法必须与基类中定义的虚拟方法具有相同的名称、返回类型和参数列表。
例如,在上面的代码中,Dog 类重写了 Animal 类中的 Speak() 方法,并使用 override 关键字来标记它。这意味着在 Dog 类中,Speak() 方法将覆盖 Animal 类中的 Speak() 方法。
总之,virtual 和 override 关键字都是用于实现多态性的重要工具,它们可以帮助我们在面向对象编程中更好地管理代码。
阅读全文