Рубрики
Без рубрики

Перегрузка Функций

Недавно я наткнулся на ключевую особенность объектно-ориентированного программирования, которая была реализована в некоторых… Помеченный как ооп, java, полиморфизм, перегрузка.

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

В двух словах, это позволяет определять несколько функций или методов с одинаковыми именами, но разными реализациями.

Это может оказаться весьма полезным в ситуациях, когда метод может принимать различные конфигурации аргументов и возвращать различный тип в каждом случае.

Что еще более интересно в перегрузке функций, так это то, что, хотя она считается незаконной во многих языках программирования, таких как Python и PHP, в других, таких как C++, C#, Java, Swift и Kotlin, она встроена.

Я узнал о полиморфизме и перегрузке функций в курсе Java с помощью вопроса с множественным выбором.

Вот пример, который они использовали:

public class Zap {
    static boolean zap() { return true; }
    static int zap(boolean x) { return 0; }
    static double zap(int x) { return 0.5; }
    static String zap(double x) { return "Zap!"; }
    static boolean zap(String x) { return false; }
    public static void main(String[] args) {
        System.out.println(zap(zap(zap(zap(1)))));
    }
}

Как вы думаете, каков результат?

a. верно b. 0 c. 0,5 d. Зап! e. ложь

С помощью отладчика мы можем отслеживать вызовы наших вложенных методов:

Java определяет, какие определения методов использовать для каждого вызова метода, основываясь на типе фактического аргумента.

Самый внутренний zap принимает целое число, поэтому Java выберет определение третьего метода. Он возвращает тип Double, и поэтому в следующем zap будет использоваться определение четвертого метода и так далее.

Этот пост был первоначально опубликован на мой блог где я пишу все о технологиях.

Оригинал: “https://dev.to/themreza/function-overloading-47kc”