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