如果我有一个超类,比如说Animal,
和两个子类:斑马和长颈鹿,
如果我决定定义一个动物向量:
Vector <Animal> animals = new Vector();
我想说:你可以加长颈鹿,但你必须先拥有至少一只斑马。
不使用 RTTI 的最佳方法是什么?(实例)
定义你自己的类:
class Animals extends Vector<Animal>
{
public Animals(Zebra z) { add(z); }
}
补充两点:
就个人而言,我会选择根本不使用继承的设计。因此,我的类将委托给他们,而不是子类化向量(或 ArrayList):
class Animals extends
{
private final Vector<Animal> inner = new Vector<Animal>();
public Animals(Zebra z) { add(z); }
// Delegate to whatever methods of Vector that Animals need to support, e.g.,
void add(Animal a) { inner.add(a); }
...
}