Sobes.tech
Middle

Ispričaj mi o pravilima preopterećenja metoda.

sobes.tech АИ

Одговор од АИ

Претоваривање метода (Method Overloading) у објектно-оријентисаном програмирању омогућава дефинисање више метода у истој класи са истим именом, али различитим сигнатурама.

Основна правила за претоваривање метода:

  1. Разлике у сигнатурама: Сигнатура метода укључује име метода и листу типова његових параметара у одговарајућем реду. Да би се сматрало да су методи претоварени, њихове сигнатуре морају да се разликују.

    // Примери различитих сигнатура
    void print(int i) { }
    void print(String s) { }
    void print(int i, String s) { }
    void print(String s, int i) { } // Разликује се редослед параметара
    
  2. Име метода мора бити исто: Претоварени методи морају имати исто име.

    // Правилан пример претоваривања
    class Example {
        void process(int a) { }
        void process(double b) { }
    }
    
  3. Тип повратне вредности није део сигнатуре: Промена само типа повратне вредности не чини методе претовареним. Компилатор неће моћи да разликује који метод да позове ако су сигнатуре параметара исте.

    // Не претварање - грешка при компилацији
    int calculate() { return 1; }
    String calculate() { return "error"; }
    
  4. Модификатори приступа и спецификатори изузетака не утичу на претоваривање: Слично типу повратне вредности, промена само модификатора приступа (public, private, protected, default) или листе изузетака (throws) не доводи до претоваривања.

    // Не претварање - грешка при компилацији ако су сигнатуре параметара исте
    public void doSomething() { }
    private void doSomething() { }
    
  5. Редослед параметара има значење: Промена редоследа типова параметара чини сигнатуре различитим.

    // Је претоваривање
    void setup(int width, int height) { }
    void setup(int height, String unit) { } // Разликује се по другом параметру
    void setup(String unit, int size) { } // Разликује се по типу и редоследу параметара
    
  6. Број параметара има значење: Различит број параметара доводи до различитих сигнатура.

    // Је претоваривање
    void log(String message) { }
    void log(String message, int level) { }
    

Стога, кључни фактор за претоваривање је јединственост сигнатуре метода, која се дефинише његовим именом и скупом (типовима и редоследом) параметара.