Перегрузку метода считают полиморфизмом? [закрытый]

21
задан George Stocker 10 February 2011 в 21:00
поделиться

6 ответов

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

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

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

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

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

11
ответ дан 29 November 2019 в 06:12
поделиться

Есть 2 типа полиморфизма.

  1. статическая
  2. динамическая.

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

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

9
ответ дан 29 November 2019 в 06:12
поделиться

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

 StringBuilder
     Append(String) // main
     Append(Boolean) // converts and calls append(String)
-5
ответ дан 29 November 2019 в 06:12
поделиться

Существуют различные типы полиморфизма :

  • перегрузочный полиморфизм (также называемый произвольным полиморфизмом)
  • преобладающий полиморфизм

Итак да, это часть полиморфизма.

39
ответ дан 29 November 2019 в 06:12
поделиться

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

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

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

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

8
ответ дан 29 November 2019 в 06:12
поделиться

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

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

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

5
ответ дан 29 November 2019 в 06:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: