Я не новичок в кодировании, но плохо знаком с полиморфизмом / наследованием / и т.д. Меня смущает статическое / динамическое связывание и, в частности, что происходит, когда я помещаю разные подклассы в массив вместе. Я работаю с некоторыми очень простыми классами животных и просто пытаюсь выучить основы.
Я тоже пытался определить их как лигеров, но потом, когда я попытался напечатать массив размеров животных, они оба имели -1 в качестве своего размера. То, как у меня сейчас получается, дает p0 правильный размер, но не p1.
public abstract class Animal {
public int size = -1;
}
public class Tiger extends Animal {
}
public class Liger extends Animal {
public int size = 121;
}
public static void main(final String[] args) {
Animal[] animal = new Animal[10];
Animal p0 = new Liger();
p0.size = 11;
animals[0] = p0;
Animal p1 = new Liger();
animals[1] = p1;
}
Когда я определяю лигеров как животных, p1 получает -1 как его размер вместо 121, который я хочу иметь. Я уверен, что проблема заключается в том, что я называю это Животное вместо лигера, но я не уверен, каков правильный синтаксис, чтобы это исправить. Я хочу, чтобы они могли быть в массиве с тиграми.