Подтвердить что ты не робот

Является ли перегрузка метода рассмотренным полиморфизмом?

Является ли перегрузка метода рассмотренной частью полиморфизма?

4b9b3361

Ответ 1

"Полиморфизм" - это просто слово и не имеет согласованного на глобальном уровне точного определения. Вы не будете просвещены ни ответом "да", ни "нет" на ваш вопрос, потому что разница будет в выбранном определении "полиморфизма", а не в сущности перегрузки метода как функции какого-либо конкретного языка. Вы можете увидеть доказательства этого в большинстве других ответов здесь, каждый из которых вводит свое собственное определение, а затем оценивает языковые особенности против него.

Ответ 3

Строго говоря, полиморфизм, от wikipedia:

- это способность одного типа, A, появляться как и использоваться как другой тип, B.

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

Если вы говорите о полиморфизме включения (обычно считается переопределяющим), это другое дело, и тогда да, это считается частью полиморфизма.

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

Ответ 4

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

Чтобы уточнить, Из Википедии:

Полиморфизм - это не то же самое, что метод перегрузка или переопределение метода. 1Полиморфизм касается только применение конкретных реализации интерфейса или более общий базовый класс.

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

Ответ 5

Существует 2 типа полиморфизма.

  • статичным
  • динамический.

Перегрузка имеет тип статического полиморфизма.. переопределение происходит в динамическом (или во время) полиморфизме.

исх. http://en.wikipedia.org/wiki/Polymorphism_(computer_science), который описывает его больше.

Ответ 6

Википедическая педантика в стороне, один из способов думать о полиморфизме: способность одной строки вызова кода/одного метода выполнять разные вещи во время выполнения в зависимости от типа экземпляра объекта, используемого для совершения вызова.

Перегрузка метода не изменяет поведение во время выполнения. Перегрузка дает вам больше вариантов списков аргументов с тем же именем метода, когда вы пишете и компилируете код, но когда он скомпилирован, этот код навсегда зафиксирован в коде.

Не следует путать с переопределением метода, который является частью полиморфизма.

Ответ 7

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

Чтобы реализовать Полиморфизм с использованием переопределения метода, вы можете переопределить поведение метода в подклассе.

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

Другие способы реализации полиморфизма - перегрузка и реализация интерфейсов.

Ответ 9

Это необходимое зло, которое есть и должно использоваться только как дополнение. В конце концов, перегрузки должны только преобразовывать и, в конечном счете, переходить к основному методу. OverloDing необходимо, потому что большинство vms для статичных файлов не знают, как преобразовать один тип в другой, чтобы параметр соответствовал цели, и именно здесь вы используете перегрузки, чтобы помочь.

 StringBuilder
     Append(String) // main
     Append(Boolean) // converts and calls append(String)