Skip to main content

Что такое перегрузка метода?

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

Простым примером перегрузки метода может быть метод, который вычисляет площадь квадрата. Это может быть определено как getArea (Square s). Этот метод может быть перегружен для дополнительного вычисления площади круга путем добавления метода getArea (Circle c).

Основным требованием для перегрузки методов является то, что методы имеют одно и то же имя. В противном случае их сигнатуры методов - имя метода, количество параметров и типы данных параметров - должны быть уникальными. Таким образом, компилятор может определить, какой метод выполнить.

Конструкторы, методы, используемые для создания объектов, часто перегружены. Это делается для инициализации объекта значениями не по умолчанию. Например, объект employee с двумя полями (имя и дата рождения или dob) может иметь следующие перегруженные конструкторы: Employee (), Employee (имя) и Employee (имя, dob). Первый конструктор создает объект сотрудника с пустыми полями name и dob. Вторая устанавливает поле имени, но оставляет поле dob пустым, а третье определяет поля имени и dob.

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

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

Чтобы избежать необходимости находить все случаи, когда метод вызывается, и добавлять новый параметр, метод может быть перегружен. Новый метод будет иметь старую подпись и будет вызываться существующим кодом. Он не будет содержать никакой логики и просто вызовет измененный метод и передаст значение по умолчанию «старый путь» для нового параметра. Новый код вызовет модифицированный метод и передаст новый параметр с соответствующим значением, старым или новым способом.

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