抽象类定义
“你好,阿米戈!我要和你说一个很有趣的新话题。”
“今天是有趣话题日呢!”
“谢谢你。”
“不客气。”
还记得我们之前为简化所有棋子类而引入的 ChessItem 基类吗?”
“记得。”
“现在,假如每个棋子都有一个方法可以渲染屏幕上的棋子。我们调用此方法,棋子就会在它当前的坐标上自我描画。那如果把这个方法改用到基类里,会对我们有帮助吗?”
“会。”学习了多态后,我可以对所有棋子调用渲染方法,而不受棋子类型限制。就像下面这样:”
例如:
class ChessBoard
{public void drawAllChessItems(){//draw them regardless of their type.ArrayList <ChessItem> items = new ArrayList<ChessItem>();items.add(new King());items.add(new Queen());items.add(new Bishop());//draw them regardless of their type.for (ChessItem item: items){item.draw();}}
}
“做得不错。完全正确。ChessItem 类本身应用 draw 方法会发生什么呢?”
“我不知道。国际象棋里没有这个棋子。