我刚刚开始学习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.任何帮助你在那里编码向导?我真的很感激它。
'positionPawnX = X;' - > x是不可访问在此范围 – exexzian 2013-02-15 02:29:46
@sansix糟糕。应该是'positionPawn'。谢谢。 – Scrantonicity83 2013-02-15 02:47:47