Является ли перегрузка любого метода полиморфизмом времени компиляции? - PullRequest
3 голосов
/ 05 февраля 2020

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

  1. полиморфизм во время компиляции (Stati c полиморфизм)
  2. динамический полиморфизм (Dynami c полиморфизм)

упоминаются некоторые учебные ссылки "Если вы перегрузите метод stati c в Java, это пример полиморфизм времени компиляции ". и некоторые упоминаются «Перегрузка метода является примером полиморфизма во время компиляции» .

я хочу знать, если перегрузка метода stati c или перегрузка каждого метода java полиморфизм во время компиляции .?

Потому что, читая первый пункт, я чувствую, почему специально упомянут метод stati c и почему не упоминаются методы и конструкторы экземпляров.

Спасибо

1 Ответ

5 голосов
/ 05 февраля 2020

В Java выбор, какую из перегрузок вызывать, всегда делается во время компиляции. Это относится к static методам, методам экземпляров, а также конструкторам.

Обратите внимание, что эти два утверждения не противоречат. Первый говорит: «Если вы перегружаете метод stati c…», который называет правильный пример, но не исключает другие примеры. Аналогичным образом, другое утверждение «Перегрузка методов является примером полиморфизма времени компиляции» является более широким, но все же правильным, без упоминания конструкторов. Пока эти операторы не утверждают, что назвали все существующие примеры, они верны.

Тем не менее, в случае методов экземпляра выбранная перегрузка может также подвергаться полиморфизму времени выполнения при переопределении, в дополнение к полиморфизм во время компиляции. Наличие перегруженных и переопределенных методов может легко привести к ошибкам, поэтому их следует использовать с осторожностью или избегать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...