假设我有一个超级类型(Shape)和两个孩子(如 Square、Circle)。
我正在尝试做这样的事情:
Shape shape = someObject.getShape();
if (shape instanceof Square){
shape = (Square) shape;
// do this
} else if (shape instanceof Circle) {
shape = (Circle) shape;
// do that
}
此外,由于获取实例似乎不是正确的 OO 原则,还有其他方法吗?干杯。
编辑。我不是想在它们上调用方法,我想将它们传递给一些需要它们特定子类型的方法。
edit2基本上我有一个 Shape 类型的集合,所以我可以在其中保存两种类型的子类型。但是当涉及到处理时,我需要知道这两个子类中的哪一个,所以我可以将它传递给一个将子类型作为参数的方法。我可以轻松地使用超类型作为参数,但这并不安全,因为我处理的是特定于子类型的数据。