При перегрузке методов (method overloading) можно изменить:
Пример на Java:
java
Что нельзя изменить при перегрузке методов:
static: Нельзя перегрузить статический метод, определив нестатический метод с такой же сигнатурой, или наоборот.Сравнение перегрузки и переопределения методов:
| Признак | Перегрузка (Overloading) | Переопределение (Overriding) |
|---|---|---|
| Где происходит | В одном классе или в иерархии классов | В дочернем классе |
| Имя метода | Одинаковое | Одинаковое |
| Сигнатура метода | Разная (количество, типы, порядок параметров) | Одинаковая |
| Возвращаемый тип | Может быть разным (но не единственное отличие) | Должен быть таким же или ковариантным (для объектов) |
| Цель | Предоставление нескольких вариантов одного действия для разных типов данных или количества аргументов | Изменение поведения унаследованного метода в дочернем классе |
| Связь между методами | Независимые методы | Связь "является" (наследование) |
| Полиморфизм | Полиморфизм на этапе компиляции (статический) | Полиморфизм на этапе выполнения (динамический) |