所以说我上课了
public abstract class Mammal { ... }
public class Wolf : Mammal
{
// concrete methods and
}
Run Code Online (Sandbox Code Playgroud)
但我不想做类似的事情:
List<Wolf> myWolfPack = new List<Wolf>();
Run Code Online (Sandbox Code Playgroud)
我想说:
WolfPack myWolfPack = new WolfPack();
Run Code Online (Sandbox Code Playgroud)
这意味着我基本上需要编写一个WolfPack类:
****public class WolfPack : IList<Wolf>
{
// properties, methods that implements IList
// WolfPack-specific methods
}****
Run Code Online (Sandbox Code Playgroud)
我想这样做的原因是因为我狼群具有特定属性(例如领导者,欧米茄).
WolfPack-specific methods
Wolf Leader { get;set; }
Wolf Omega { get;set; }
Run Code Online (Sandbox Code Playgroud)
所以这是我的新手问题:
这个叫什么?是否有想要将方法添加到集合/列表/现有具体对象的名称?如果我只是在我的WolfPack类中使用私有List,那么我应该只说:public class WolfPack:List
?用一个具体的类来做这个似乎很奇怪,不是吗?这有什么缺点吗?
对不起,如果我的话很奇怪.
我建议你使用组合而不是继承.像这样的东西:
public class WolfPack
{
public IReadOnlyList<Wolf> Members { get; private set; }
public Wolf Leader { get; private set; }
public Wolf Omega { get; private set; }
}
Run Code Online (Sandbox Code Playgroud)
特定于WolfPack集合的任何操作都Wolf应该是WolfPack类的方法.这不需要对内部使用的.NET集合类进行任何修改.