У меня вопрос о наследовании и привязке.Java-суперкласс, вызывающий метод, созданный в подклассе
Что делать, если я создаю новый метод в подклассе и пытаюсь вызвать его со ссылкой на суперкласс?
Я знаю, что он сначала проверит тип, а затем объект. Так что согласно правилам это не работает, потому что этот метод не объявлен в суперклассе.
Но нет ли способа преодолеть это?
Я имею в виду, что наследование означает, что вы должны объявить каждый метод в суперклассе, и если вы хотите что-то изменить для подкласса, вы можете его переопределить? Так что, если вдруг я пойму, что один из моих подклассов нуждается в специальном методе или нуждается в перегрузке, то я заставляю сначала объявить его в суперклассе или забыть об этом вообще?
Даже если это было возможно, этого никогда не должно быть сделано. Суперкласс не должен иметь никаких знаний для своих детей. –
Re '« Но нет ли способа преодолеть это? »- нет ничего, что можно было бы преодолеть, поскольку этого никогда не должно быть сделано. Рассмотрите возможность публикации основной мотивации для этого вопроса, так как ваш вопрос может быть проблемой [XY] (http://mywiki.wooledge.org/XyProblem), где вы спрашиваете «как исправить эту проблему с кодом», когда наилучшим решением является использовать совершенно другой подход. Подумайте, расскажите нам общую проблему, которую вы пытаетесь решить, а не как пытаетесь ее решить. –
Что бы вы ожидали, если вы вызвали метод в экземпляре суперкласса, который * не был * фактически экземпляром подкласса, объявляющим метод? –