У меня есть суперкласса Dinosaur
только с одним подклассом Tyrano
с использованием полиморфных массивов в Java
я есть Dinosaur
с этими атрибутами:
public Dinosaur(String name, String size, String movement, String diet, String terainType){
...
//i've already made the setters and getters along with some helper functions
}
и у меня Tyrano
с 2 дополнительные атрибуты, которые являются teeth
и hobby
public Tyrano(String name, String size, String movement, String diet, String terainType, int teeth, String hobby){
...
//made setters and getters with some helper functions
}
сейчас в моей программе драйверов i want чтобы сделать тип массива Dinosaur
, который будет принимать несколько подклассов Dinosaur
одного из них, который является подклассом Tyrano
я делать, если его можно не знать, но мой инструктор сказал, что это так вот, что я сделал, это на главном:
Dinosaur[] dinoList = new Dinosaur[9];
dinoList[0] = new Tyrano("Gary", "Large", "other dino Meat", "Land", 30, "singing");
int teeth = dinoList[0].getTeeth();
String hobby = dinoList[0].getHobby();
...//i also called the helper functions that were in Tyrano
он получает сообщение об ошибке:
error: cannot find symbol
dinoList[0].getTeeth();
^
error: cannot find symbol
dinoList[0].getHobby();
^
...//along with same errors with the helper functions that were in Tyrano
...//it also happens when i call setters that were unique for the subclass Tyrano
и я не знаю, почему именно это делать, я уже проверил и у меня нет синтаксических ошибок и я уже определил вспомогательные функции, а также тех, геттеры и сеттеры, но нет проблем для обычных, которые находятся в суперклассе Dinosaur
Почему предпочтение для 'Tyrano.class.isAssignableFrom (dinoList [0] .getClass())' вместо 'dinoList [ 0] экземпляр Тирано? – Holloway
В этом примере одно и то же, только личное предпочтение. Основное отличие заключается в том, что isAssignableFrom может выбрать класс во время выполнения. –