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.