私は最近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が得られます。コーディングウィザードの助けはありますか?本当にありがたいです。