2013-08-24 4 views
2

Я все еще в колледже и помню только о том, что слышал о 1 типе полиморфизма при изучении Java; однако, когда я был в классе C#, я просто помню, как мой профессор говорил о 4 типах полиморфизма.Виды полиморфизма. Больше одного?

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

Каковы другие типы, и насколько они важны, как единственный тип, которым нас учили выше? Вот почему их не учат?

+0

Я думал, что вся суть полиморфизма заключается в том, что поведение может меняться, позволяя нескольким «типам» ... Видите, что я там сделал? :-D –

+1

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

+0

Согласно Википедии, существует только [три типа полиморфизма] (http://en.wikipedia.org/wiki/Polymorphism_ (computer_science) #Forms_of_polymorphism). – Jeffrey

ответ

4

Да, есть 4 вида полиморфизма

  1. Перегрузка (имена же функции, различные типы параметров. Это включает в себя оператор перегрузки и выполняется во время компиляции)

  2. Параметрический полиморфизм (Это похоже на шаблоны в C++) Время компиляции

  3. Подтип полиморфизм (если функция имеет параметр с подтипом, например сердечно-> Honda, е (автомобиль), то функция F принимает F (Honda), а также.) Время воспроизведения

  4. Параметр принуждении (Это неявное преобразование типа. Например, функция может потребовать двойной/реальный/поплавок, но будет принимать Int и неявно базовому типу параметра) Compile время

Код:

+1

Спасибо! Итак, они в основном то, что мы узнали ... они просто идут разными именами ... например, перегрузка, которая проще всего запомнить и делает –

+0

+1 Вы оставили вне ** IGiveUpPolymorphismThatIllFixLaterButLaterMeansNever **, где вы (ab) используете ' dynamic' или 'switch'. –

Смежные вопросы