我最近才开始学习 java,所以我在理解我认为是多态性问题时遇到了一些麻烦。我正在尝试编写一个国际象棋游戏,所以我有一个超类数组,GamePiece
子类PawnPiece
扩展了该数组。我在两个类中都有一个方法,MovePiece()
它改变了一块的位置。当我使用 时MovePiece()
,会更改 的位置值PawnPiece
,但是当我尝试在我的主代码中调用位置时,它给了我“GamePiece”的未更改位置。这是我的一些代码:
public class GamePiece {
int position;
//Constructor
public GamePiece(int x){
position=x;
}
public void MovePiece(int positionOfMove){};
}
public class PawnPiece extends GamePiece{
int positionPawn;
//Subclass Constructor
public PawnPiece(int x){
super(x);
}
public void MovePiece(int positionOfMovePawn){
positionPawn=x;
}
public classChessMain{
public static void main(String[] arg){
GamePiece[] allPieces = new GamePiece[32];
int startPositionPawn = 9; //Arbitrary#
allPieces[8]=new PawnPiece(int startPositionPawn); //index is arbitrary
int playerMove = 5; //Arbitrary#
allPieces[8].MovePiece(playerMove);
}
}
最后一行给了我初始位置(在这种情况下为 9),但我知道如果我可以访问 的位置PawnPiece
,它会给我 5。对所有编码向导有什么帮助吗?我真的很感激。