как только вы передадите значение, вы передадите его. обновление значения позже не влияет на то, что вы дали ранее. Легко исправить, хотя:
class Mammals extends Animals {
public Mammals(int speciesNumber) {
super(toSpeciesName(speciesNumber));
}
private static String toSpeciesName(int speciesNumber) {
// your if/elseif block here, or probably just a switch/case block.
}
}
Примечание: не дублируйте поля, подобные этим; если ваш родительский класс имеет поле с именем species
, не делайте другое поле с именем species
в подклассе. Вы ничего не переопределяете, у вас есть 2 совершенно не связанных поля, одно из которых «затенено» и очень труднодоступное. Плохой план Кроме того, сделать это * * * c здесь странно. Не делай этого тоже. Это будет означать, что более одного из них потерпит неудачу.