Junior
Kiedy metoda jest uważana za nadpisaną (overriding)?
sobes.tech AI
Odpowiedź od AI
Metoda jest uważana za nadpisaną (overriding) w programowaniu obiektowym, gdy:
- Jest zdefiniowana w podklasie z tym samym nazwą, typem zwracanym i listą parametrów (sygnaturą), co metoda w superklasie.
- Metoda w superklasie nie jest
private. - Metoda w podklasie nie ma bardziej restrykcyjnego modyfikatora dostępu niż metoda w superklasie.
- W przypadku wyjątków, nadpisująca metoda nie może deklarować sprawdzanych wyjątków ([checked exceptions]), które są bardziej ogólne niż te zadeklarowane w nadpisywanej metodzie.
Przy wywołaniu nadpisanej metody na obiekcie podklasy, wykonywana jest wersja metody z podklasy. To jest przykład polimorfizmu w czasie wykonywania.
Przykład w Java:
// java
class Animal {
public void makeSound() {
System.out.println("Ogólny dźwięk zwierzęcia");
}
}
class Dog extends Animal {
@Override // Adnotacja @Override potwierdza, że metoda została nadpisana
public void makeSound() {
System.out.println("Hau hau");
}
}
class Cat extends Animal {
@Override
public void makeSound() {
System.out.println("Miau");
}
}