У меня есть дочерний класс с двумя переменными экземпляра color
и position
. Конструкторы принимают оба из них. Сначала я вызываю конструктор super(color)
, который содержит setColor(color)
-> this.color = color
. Согласно инструменту отладки, это установка this.color
для суперкласса, а не дочернего класса, который вызвал метод. Разве это не правильный метод использования конструктора суперкласса для установки экземпляров переменных?
Rook. java:
public Rook(String color, Position pos) {
super(color);
// at this point this.color == null (for Rook)
initPosition(pos);
}
GenericPiece. java:
public GenericPiece(String color) {
setColor(color);
// at this point this.color == "white" (for GenericPiece)
}
public void setColor(String color) throws InvalidPieceColorError {
if (Color.checkValid(color)) {
this.color = color;
} else {
throw new InvalidPieceColorError(color);
}
}
! Вот изображение отладочной информации 1