【发布时间】:2020-06-01 17:18:11
【问题描述】:
伙计们,我需要你的帮助。
我们有这个代码:
class Program
{
static void Main(string[] args)
{
Animal pig = new Pig();
Pig pig2 = new Pig();
List<Animal> Animals = new List<Animal>();
Animals.Add(pig);
Animals.Add(pig2);
foreach(Animal a in Animals)
{
Animal.AnimalSound();
}
}
}
class Animal
{
public virtual void AnimalSound()
{
Console.WriteLine("AnimalSound");
}
}
class Pig : Animal
{
public override void AnimalSound()
{
Console.WriteLine("wee wee!");
}
}
我的问题是当我实例化变量 pig 和 pig2 有什么区别 Animal pig = new Pig();和猪 pig2 = new Pig();
为什么不将它们都声明为 ReferenceType Pig,因为 Pig 一如既往地是 Animal??
【问题讨论】:
-
您的代码中没有
pig2声明 -
类的每个实例都是不同的内存位置。所以试图匹配对象 pig 不会匹配。
-
@PrakashReddyPotlapadu Animal 不是界面
-
@TheBatman 他可以实例化该类型的列表,即使它是一个接口。
-
对不起,我有一些错误并更正了。现在看看
标签: c# class inheritance polymorphism