Я работаю над проектом atm, который требует от меня использования концепций полиморфизма.Методы вызова полиморфизма Java для подклассов в массиве SuperClass
У меня такой вопрос:
Imagine У меня есть интерфейс, который представляет все млекопитающие, то я создаю следующие подклассы: Человек и кит.
Представьте себе, что я хотел создать в моей программе некоторых людей и некоторых китов, я бы сохранил их в массиве млекопитающих.
Вещи есть, суб-класс Human
имеет метод solveMathProblem()
, в то время как Whale
класс не имеет его, поэтому ни один не делает млекопитающее.
Как я могу использовать этот метод в массиве (например: mammals[2].solveMathProblem();
)?
Это не будет работать, так как solveMathProblem()
не указано в млекопитающим интерфейс, потому что только люди могут это сделать)
Что я могу сделать, чтобы сделать эту работу?
Поскольку у вас есть только экземпляры типа Mammal, вы не можете использовать какие-либо методы, которые не определены в этом типе. Если вы хотите использовать методы подтипа, вам нужно передать свои объекты в Human, что не удастся (путем исключения исключения), если объект не соответствует новому типу. Оператор 'instanceof' также может быть полезен. –
Вы можете использовать литье как '((человеческие) млекопитающие [2]). SolveMathProblem();' но чтобы быть уверенным, что 'млекопитающие [2]' вам нужно проверить 'if (млекопитающие [2] instanceof Human)' first. Кроме того, использование кастинга чаще всего означает, что ваш проект должен быть переработан, поскольку * литье * не является полиморфизмом. – Pshemo
@Joao, хотя и не обязательно, это не повредило бы принять один из ответов, который помог бы вам ответить на ваш вопрос [в знак признательности тому, кто провел свободное время, помогая вам бесплатно :)] – CKing