Sobes.tech
Junior

Šta se može promeniti pri preopterećenju metoda u programiranju?

sobes.tech АИ

Одговор од АИ

При пренатоварување на методи (method overloading), можете да промените:

  • Број на параметри: Методи со исто име можат да имаат различен број на формални параметри.
  • Типови на параметри: Методи со исто име и број на параметри можат да се разликуваат по типови на овие параметри.
  • Редослед на типови на параметри: Ако методите имаат ист број на параметри и исти типови, но се распоредени во различен ред, тоа исто се смета за пренатоварување.

Пример во Java:

// Класа со пренатоварени методи
class Calculator {

    // Метод за собирање на два цели броја
    public int add(int a, int b) {
        return a + b;
    }

    // Пренатоварен метод: собирање на три цели броја
    public int add(int a, int b, int c) {
        return a + b + c;
    }

    // Пренатоварен метод: собирање на два броја со плава запетина
    public double add(double a, double b) {
        return a + b;
    }

    // Пренатоварен метод: собирање на цел број и број со плава запетина
    public double add(int a, double b) {
        return a + b;
    }

    // Пренатоварен метод: собирање на број со плава запетина и цел број
    public double add(double a, int b) {
        return a + b;
    }
}

Што не може да се промени при пренатоварување:

  • Типот на враќање: Два метода со исто име и иста сигнатура (број, типови и редослед на параметри) не можат да се разликуваат само по типот на враќање.
  • Модификатори за пристап: Модификаторите за пристап (public, private, protected, default) не влијаат на пренатоварувањето.
  • static-от присуство или отсуство: Не може да се пренатовари статички метод со дефинирање на нестатички со иста сигнатура, или обратно.
  • Листата на исклучоци: Листата на исклучоци не е дел од сигнатурата на методот и не се зема предвид при пренатоварување.

Споредба меѓу пренатоварување и презапишување на методи:

Карактеристика Пренатоварување (Overloading) Презапишување (Overriding)
Каде се случува Во ист класа или во хиерархија на класи Во наследена класа
Име на методот Исто Исто
Сигнатура на методот Различна (број, типови, редослед на параметри) Исто
Тип на враќање Може да биде различен (но не е единствената разлика) Мора да биде ист или коваријантен (за објекти)
Цел Обезбедување на различни варијанти на една акција за различни типови на податоци или број на аргументи Промена на однесувањето на наследениот метод во наследената класа
Врска меѓу методите Независни методи Врска "е" (наследување)
Полиморфизам Полиморфизам во фаза на компилација (статички) Полиморфизам во фаза на извршување (динамички)