Sobes.tech
Junior — Middle

Jak odróżnić przeciążenie metody od jej nadpisania w programowaniu obiektowym?

sobes.tech AI

Odpowiedź od AI

Przeciążanie metody (overloading) i nadpisywanie metody (overriding) to różne koncepcje w programowaniu obiektowym:

  • Przeciążanie metody: występowanie w jednej klasie kilku metod o tej samej nazwie, ale różnych parametrach (typie, ilości). Pozwala to wywołać metodę z różnymi argumentami.

  • Nadpisywanie metody: gdy klasa pochodna dostarcza własną implementację metody, która jest już zdefiniowana w klasie bazowej z tą samą sygnaturą (nazwą i parametrami). Pozwala to zmienić zachowanie metody dla klasy pochodnej.

Przykład w Java:

class Animal {
    void sound() {
        System.out.println("Jakiś dźwięk");
    }

    void sound(String mood) { // przeciążenie
        System.out.println("Dźwięk gdy " + mood);
    }
}

class Dog extends Animal {
    @Override
    void sound() { // nadpisanie
        System.out.println("Szczekanie");
    }
}

Tutaj sound() w klasie Dog nadpisuje metodę klasy bazowej, a sound(String mood) jest przeciążeniem metody w tej samej klasie Animal.