子类和超类方法

Caseylouisee

我正在创建具有不同类型正方形的垄断游戏。Square超类PropertySquare子类

我创建了一个循环,掷骰子并将玩家移到另一个正方形。这些正方形在数组列表中,我可以在它们上调用超类方法。但是,即使将正方形设置为更特定的类型(正方形的子类),我也无法在它们上调用子类方法。

这就是我在董事会课程中初始化正方形的方式。

private static final ArrayList<Square> squares = new ArrayList<Square>(40);
squares.add(1, new PropertySquare("Old Kent Road", 1, 60, "Brown"));
board.getSquare(pos).getName());

getName是超类平方中的一种方法。但是,即使Square是属性类型,也无法调用PropertySquare此类中的方法,例如getPrice();

我将如何更改此方法或能够调用子类方法?

m0skit0

我假设board.getSquare()返回Square,并且Square没有任何getPrice()方法,因此即使实例实际上是(aka polymorphism也无法调用getPrice()声明为的对象为此,您必须首先转换为特定的子类。例如:SquarePropertySquare

final Square square = board.getSquare(pos);
if (square instanceof PropertySquare) {
    ((PropertySquare)square).getPrice();
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章