Разница между перегрузкой метода и переопределением

Перегрузка метода

Перегрузка методов, также известная как перегрузка функций или полиморфизм времени компиляции, представляет собой концепцию наличия двух или более методов с одинаковым именем, но разной сигнатурой в одной и той же области видимости. Есть много языков программирования, которые поддерживают эту функцию: Ada, C ++, C #, D и Java.

Пример перегрузки метода в C #
Как показано в приведенном выше примере, метод «Полигон» перегружен 3 раза с другой сигнатурой метода, то есть тип или количество параметров различаются..

Переопределение метода

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

Пример переопределения метода в C #
Здесь метод draw в классе Source2 переопределяет метод draw, определенный в классе Source1.

Разница между перегрузкой метода и переопределением метода

  1. В методе методы перегрузки должны иметь другую сигнатуру. В методе переопределяющие методы должны иметь одинаковую подпись.
  2. Перегрузка функций заключается в том, чтобы «добавить» или «расширить» больше поведения метода. Переопределение функции - это полное «изменение» или «переопределение» поведения метода..
  3. Перегрузка метода используется для достижения полиморфизма во время компиляции; переопределение метода используется для достижения полиморфизма во время выполнения.
  4. При перегрузке метода / функции компилятор знает, какой объект назначен тому или иному классу во время компиляции, но при переопределении метода эта информация не известна до времени выполнения.
  5. Перегрузка функций происходит в том же классе, тогда как переопределение происходит в классе, производном от базового класса..