Sobes.tech
Junior

Co musi odróżniać dwie metody, abyśmy mogli je uznać za przeciążone?

sobes.tech AI

Odpowiedź od AI

Aby dwa metody były uznane za przeciążone, muszą spełniać następujące warunki:

  • Taka sama nazwa metody. Nazwa metod musi być identyczna.
  • Inna sygnatura metody. Sygnatura metody obejmuje nazwę metody i listę typów parametrów (ich ilość, kolejność i typy). Typ zwracany przez metodę nie jest częścią sygnatury i nie wpływa na przeciążenie.

Przykłady:

class Example {
    void print(int num) { // Sygnatura: print(int)
        System.out.println(num);
    }

    void print(String text) { // Sygnatura: print(String)
        System.out.println(text);
    }

    void print(int num, String text) { // Sygnatura: print(int, String)
        System.out.println(num + " " + text);
    }

    // To nie jest przeciążenie, ponieważ sygnatura print(int) się powtarza
    // int print(int num) {
    //     return num;
    // }
}

Tabela ilustrująca przykłady przeciążenia:

Nazwa metody Typy parametrów Czy metody są takie same / różne Czy jest przeciążeniem? Powód
calc (int, int) Różne Tak Różna sygnatura (ilość i typy parametrów)
calc (double, double) Różne Tak Różna sygnatura (typy parametrów)
calc (int, int, int) Różne Tak Różna sygnatura (ilość parametrów)
calc () Różne Tak Różna sygnatura (ilość parametrów)
calc (int, int) Tak Nie Taka sama sygnatura
calculate (int, int) Różne Nie Inna nazwa metody