Переопределение и перегрузка Java выдают ошибки во время компиляции? - PullRequest
2 голосов
/ 12 мая 2011

Я кодировал несколько примеров перегрузки метода и переопределения метода.Перегрузка метода - это статический полиморфизм, а переопределение - это динамический полиморфизм.

Таким образом, любая ошибка, связанная с перегрузкой, будет обнаружена во время компиляции. Правильно?- Я сомневаюсь

Любые ошибки, связанные с переопределением метода (- в случае, если метод дочернего класса имеет то же имя, что и базовый класс, и те же аргументы, что и базовый класс ----), будет выдано во время компиляции.

Существуют ли сценарии в обоих вышеупомянутых случаях, когда существует исключение во время выполнения?

Ответы [ 2 ]

2 голосов
/ 12 мая 2011

Таким образом, любая ошибка, связанная с перегрузкой, будет обнаружена во время компиляции. Правильно? Или есть какие-либо сценарии, когда исключение во время выполнения выдается из-за неправильной перегрузки - я сомневаюсь

Нет, это не должно произойти, если ваш код из метода не выдает никаких исключений времени выполнения.

Любые ошибки, связанные с переопределением метода (- в случае, если метод дочернего класса имеет то же имя, что и базовый класси те же аргументы, что и у базового класса ----), будут выданы во время компиляции.

Это то, что называется переопределением.если его нет, он может выдать ошибку времени компиляции, если вы используете @Override

1 голос
/ 12 мая 2011

Я не могу представить, как перегрузка метода может вызвать исключение времени выполнения.

Некоторые сценарии, когда неправильное / неполное переопределение метода может вызвать исключения времени выполнения:

  1. Базовый метод является абстрактным, в то время как онне был реализован дочерним классом - это может произойти, когда родительский класс был перекомпилирован с добавлением нового метода, в то время как дочерний класс не был перекомпилирован (глючная отложенная компиляция или классы, расположенные в разных jar-файлах и т. д.)
  2. Переопределенный метод вызывается из конструктора базового класса .
  3. Относится к 1: базовый метод не абстрактный, но сигнатура была изменена, а дочерний класс не был перекомпилирован.Так что это не вызвало ошибку компиляции и вылетит во время выполнения.
...