问题出在这里:我正在写一个国际象棋程序,我有一个超类Piece,它有一个canMove函数,用于确定目标是否是国际象棋的有效位置。
public abstract boolean canMove(Piece[][] board, int fromX, int fromY, int toX, int toY);
我试图将其扩展到其他Piece子类(Pawn,Rook等)并且它们都运行良好。
然而,当我试图为King类扩展它时,我不得不在另一个King的函数中使用这个canMove方法来检查状态是否为checkMate。
然而,这需要我将King的canMove函数更改为static,当我这样做时,它要求我删除@Override注释
@Override
public static boolean canMove(Piece[][] board, int fromX, int fromY, int toX, int toY) {
这导致我更改了canMove of King的名称,但仍然让我创建一个空白的canMove函数,因为它是一个具有抽象canMove方法的超类Piece的子类。
如何防止此问题?