子类方法的重写【表现出多态】C#
时间: 2023-07-12 22:35:51 浏览: 120
C#中方法的重写
5星 · 资源好评率100%
在 C# 中,子类可以重写父类中的方法,从而表现出多态性。为了重写一个方法,子类必须使用 `override` 关键字来标记该方法,并且该方法必须与父类中的方法具有相同的名称、返回类型和参数列表。
以下是一个简单的示例,展示了如何在子类中重写父类的方法:
```csharp
class Animal {
public virtual void Speak() {
Console.WriteLine("Animal speaks");
}
}
class Dog : Animal {
public override void Speak() {
Console.WriteLine("Dog barks");
}
}
class Program {
static void Main(string[] args) {
Animal animal = new Animal();
animal.Speak(); // 输出 "Animal speaks"
Dog dog = new Dog();
dog.Speak(); // 输出 "Dog barks"
Animal dogAsAnimal = new Dog(); // 子类对象可以赋值给父类变量
dogAsAnimal.Speak(); // 输出 "Dog barks",表现出多态性
}
}
```
在上面的示例中,我们定义了一个 `Animal` 类和一个 `Dog` 类,其中 `Dog` 是 `Animal` 的子类。`Animal` 类中有一个 `Speak` 方法,我们在 `Dog` 类中重写了该方法,实现了狗叫的功能。在 `Program` 类中,我们分别创建了 `Animal` 和 `Dog` 的对象,并调用了它们的 `Speak` 方法,输出了不同的结果。同时我们还创建了一个 `Animal` 类型的变量 `dogAsAnimal`,并将其赋值为一个 `Dog` 类型的对象,然后调用了它的 `Speak` 方法,输出了与 `Dog` 相同的结果,展现了多态性。
阅读全文