Является ли перегрузка метода рассмотренной частью полиморфизма?
Является ли перегрузка метода рассмотренным полиморфизмом?
Ответ 1
"Полиморфизм" - это просто слово и не имеет согласованного на глобальном уровне точного определения. Вы не будете просвещены ни ответом "да", ни "нет" на ваш вопрос, потому что разница будет в выбранном определении "полиморфизма", а не в сущности перегрузки метода как функции какого-либо конкретного языка. Вы можете увидеть доказательства этого в большинстве других ответов здесь, каждый из которых вводит свое собственное определение, а затем оценивает языковые особенности против него.
Ответ 2
Существуют разные типы полиморфизма:
- перегрузка полиморфизма (также называемого Ad-hoc-полиморфизмом)
- переопределяющий полиморфизм
Итак, да, это часть полиморфизма.
Ответ 3
Строго говоря, полиморфизм, от wikipedia:
- это способность одного типа, A, появляться как и использоваться как другой тип, B.
Таким образом, перегрузка метода как таковая не считается частью этого полиморфизма определения, так как перегрузки определяются как часть одного типа.
Если вы говорите о полиморфизме включения (обычно считается переопределяющим), это другое дело, и тогда да, это считается частью полиморфизма.
полиморфизм включения - это понятие в теории типов, в котором имя может обозначать экземпляры многих разных классов, если они связаны некоторым обычным суперклассом.
Ответ 4
Нет, перегрузка - нет. Возможно, вы ссылаетесь на метод переопределения, который действительно является частью полиморфизма.
Чтобы уточнить, Из Википедии:
Полиморфизм - это не то же самое, что метод перегрузка или переопределение метода. 1Полиморфизм касается только применение конкретных реализации интерфейса или более общий базовый класс.
Итак, я бы сказал, что метод переопределяет и перегружает метод и удобные функции некоторого языка в отношении полиморфизма, но не является основной проблемой полиморфизма (в объектно-ориентированном программировании), который касается только способности объекта действовать так, как если бы он был другим объектом в своей иерархической цепочке.
Ответ 5
Существует 2 типа полиморфизма.
- статичным
- динамический.
Перегрузка имеет тип статического полиморфизма.. переопределение происходит в динамическом (или во время) полиморфизме.
исх. http://en.wikipedia.org/wiki/Polymorphism_(computer_science), который описывает его больше.
Ответ 6
Википедическая педантика в стороне, один из способов думать о полиморфизме: способность одной строки вызова кода/одного метода выполнять разные вещи во время выполнения в зависимости от типа экземпляра объекта, используемого для совершения вызова.
Перегрузка метода не изменяет поведение во время выполнения. Перегрузка дает вам больше вариантов списков аргументов с тем же именем метода, когда вы пишете и компилируете код, но когда он скомпилирован, этот код навсегда зафиксирован в коде.
Не следует путать с переопределением метода, который является частью полиморфизма.
Ответ 7
Переопределение или перегрузка метода не является полиморфизмом. Правильный способ сказать, что полиморфизм может быть реализован с использованием переопределения или перегрузки метода и другими способами.
Чтобы реализовать Полиморфизм с использованием переопределения метода, вы можете переопределить поведение метода в подклассе.
Чтобы реализовать Полиморфизм с использованием перегрузки метода, вам нужно написать много методов с тем же именем и одинаковым количеством параметров, но с разными типами данных и реализовать различные методы в этих методах. Теперь это также полиморфизм.
Другие способы реализации полиморфизма - перегрузка и реализация интерфейсов.
Ответ 8
нет, overriding, overloading что-то другое
Ответ 9
Это необходимое зло, которое есть и должно использоваться только как дополнение. В конце концов, перегрузки должны только преобразовывать и, в конечном счете, переходить к основному методу. OverloDing необходимо, потому что большинство vms для статичных файлов не знают, как преобразовать один тип в другой, чтобы параметр соответствовал цели, и именно здесь вы используете перегрузки, чтобы помочь.
StringBuilder
Append(String) // main
Append(Boolean) // converts and calls append(String)