Я играю в шахматы и попробовал использовать дизайн наследования для всех фигур. Я хочу, чтобы пешка подкласса использовала метод printPiece из Piece, но мне нужно изменить параметры каждого куска. Я знаю, что глупо иметь одинаковые параметры в обоих классах, но я не знаю, как заставить суперкласс использовать метод print без объявления значка в нем. То же самое, если я хочу создать геттеры для суперкласса, подклассы не распознают их.
Я попробовал предоставленный код, и он не распознает, что значок «i» из пешки, он просто используетметод суперкласса и пишет ноль. Также попытался сделать параметры защищенными, но результат тот же.
public abstract class Piece{
private String name;
private int value;
private boolean alive;
private char icon;
public Piece() {}
public abstract Coordinate movePiece(Coordinate coor);
public abstract boolean canMovePiece();
public void printPiece()
{
System.out.print(icon);
}
}
public class Pawn extends Piece {
private String name;
private int value;
private boolean white;
private char icon;
public Pawn(boolean pWhite) {
super();
this.value = 1;
this.name = "Pawn";
this.white = pWhite;
if(pWhite) {this.icon = 'I';}
else {this.icon = 'i';}
}
public Coordinate movePiece(Coordinate coor){}
public boolean canMovePiece() {}
}