gpt4 book ai didi

c# - 为什么以及何时使用多态性?

转载 作者:太空狗 更新时间:2023-10-29 19:53:53 26 4
gpt4 key购买 nike

我是 OOP 的新手,多态性让我遇到了困难:

class Animal
{
public virtual void eat()
{
Console.Write("Animal eating");
}
}
class Dog : Animal
{
public override void eat()
{
Console.Write("Dog eating");
}
}
class Program
{
public void Main()
{
Animal dog = new Dog();
Animal generic = new Animal();
dog.eat();
generic.eat();
}
}

这样打印

Dog eating
Animal eating

但是为什么不直接使用 Dog 类型而不是动物类型,比如 Dog dog = new Dog()?当您知道该对象是动物但不知道它是哪种动物时,我认为这会派上用场。请向我解释一下。

谢谢

最佳答案

您可以通过父类(super class)来引用子类。

Animal dog = new Dog();
Animal cat = new Cat();
Animal frog = new Frog();

List<Animal> animals = new List<Animal>();

animals.add(dog);
animals.add(cat);
animals.add(frog);

foreach(Animal animal in animals)
{
Console.WriteLine(animal.eat());
}

关于c# - 为什么以及何时使用多态性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12756048/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com