Co to jest przesłanianie metody?
Przesłanianie metody oznacza zdefiniowanie w klasie pochodnej metody o tej samej nazwie i zwykle tej samej sygnaturze jak metoda w klasie bazowej, ale z inną implementacją. Dzięki temu obiekt klasy pochodnej może zachowywać się inaczej niż obiekt klasy bazowej, mimo że wywoływana jest metoda o tej samej nazwie.
W wielu językach programowania ten mechanizm jest nazywany także nadpisywaniem metody (method overriding).
Przykład w Javie
class Zwierze {
void dajGlos() {
System.out.println("Dźwięk zwierzęcia");
}
}
class Pies extends Zwierze {
@Override
void dajGlos() {
System.out.println("Hau hau");
}
}
Metoda dajGlos() istnieje w klasie bazowej Zwierze, ale klasa pochodna Pies dostarcza własną wersję tej metody.
Po co stosuje się przesłanianie?
- aby zmienić zachowanie odziedziczonej metody,
- aby dopasować działanie metody do konkretnej klasy pochodnej,
- aby korzystać z polimorfizmu,
- aby pisać kod bardziej elastyczny i łatwiejszy do rozbudowy.
Przesłanianie a przeciążanie
Przesłanianie nie jest tym samym co przeciążanie metod.
- Przesłanianie: metoda w klasie bazowej i pochodnej ma tę samą nazwę oraz podobną lub identyczną sygnaturę, ale inną implementację.
- Przeciążanie: w tej samej klasie istnieje kilka metod o tej samej nazwie, ale z różnymi parametrami.
Wniosek egzaminacyjny
Jeżeli w pytaniu pojawia się klasa bazowa i pochodna oraz ta sama metoda z inną implementacją w klasie pochodnej, chodzi o przesłanianie metody.