【发布时间】:2015-03-17 17:18:10
【问题描述】:
我有一个问题,我无法用简单的语言来解释,所以我会用一个例子来说明我的想法。
我有牛、马、羊三个班。和类动物。现在我希望 clas Animal 存储动物列表,但只有一个指定的物种(用户在构造函数中选择类型)。现在我不想使用模板,也不想在一个类中创建三个不同的列表。所以我想知道是否有其他方法可以做到这一点。我认为可以这样做:
public class Animal
{
}
public class Cow : Animal
{
}
public class Horse : Animal
{
}
public class Sheep : Animal
{
}
public class Animals
{
public String Type { get; protected set; }
public List<Animal> List { get; set;}
public Animals(String type)
{
this.Type = type;
switch (type)
{
case "Cow":
List = new List<Cow>();
break;
case "Horse":
List = new List<Horse>();
break;
case "Sheep":
List = new List<Sheep>();
break;
}
}
}
当然,该代码只是示例,它不起作用,但我认为它说明了我遇到的问题。我确定我过去看到过类似的东西,但我不知道它是 C# 还是 Java。如果我记得它看起来像这样:
Animal animal = new Cow();
告诉我有没有办法做到这一点。
【问题讨论】:
-
您需要阅读有关装箱和拆箱的信息 - 也许您可以使用动态来执行此操作...我不确定
-
我不确定,但我记得在 Java Head First 一书中读过类似的内容。