Когда речь идет о наследовании / полиморфизме в Java, вы видите в основном два типа приведений:
Приведение к базовому типу:
Superclass x = new Subclass();
Это неявное и не нуждается в жестком приведении, потому что Java знает, что все, что может Superclass
, может Subclass
также делать.
* понижающее приведение 1013 *
Superclass x = new Subclass();
Subclass y = (Subclass) x;
В этом случае вам нужно выполнить hard cast, потому что Java не совсем уверена, сработает ли это или нет. Вы должны успокоить его, сказав, что знаете, что делаете. Причина этого в том, что у подкласса могут быть странные методы, которых у суперкласса нет.
В общем, если вы хотите создать экземпляр класса для вызова чего-либо в его подклассе, вам, вероятно, следует просто создать экземпляр этого подкласса для начала - или определить, должен ли метод быть в суперклассе.