Junior
Kiedy w programowaniu dochodzi do nadpisywania metody (overriding)?
sobes.tech AI
Odpowiedź od AI
Przesłanianie metody występuje w dziedziczeniu, gdy klasa pochodna zapewnia własną implementację metody, która już jest zdefiniowana w klasie bazowej. Sygnatura metody (nazwa, typ zwracany i liczba/typy argumentów) musi się zgadzać z metodą w klasie bazowej. Pozwala to na działanie polimorfizmu: obiekt klasy pochodnej, używany jako obiekt klasy bazowej, wywołuje swoją specyficzną implementację metody.
Przykłady zastosowania:
- Zmiana logiki odziedziczonego zachowania.
- Zapewnienie specyficznej dla podklasy implementacji wspólnego interfejsu.
Kluczowe punkty:
- Wymagany jest związek jest-tym (dziedziczenie).
- Sygnatura metody musi się zgadzać.
- Modyfikator dostępu może być taki sam lub mniej restrykcyjny niż w metodzie bazowej.
- Nie można przesłonić metod
finallubstatic(w większości języków).
// Przykład w Java
class Animal {
public void makeSound() {
System.out.println("Ogólny dźwięk zwierzęcia");
}
}
class Dog extends Animal {
@Override // Adnotacja wskazuje na przesłonięcie
public void makeSound() {
System.out.println("Hau!");
}
}
// Użycie
// Animal myAnimal = new Animal();
// myAnimal.makeSound(); // Wynik: Ogólny dźwięk zwierzęcia
//
// Animal myDog = new Dog();
// myDog.makeSound(); // Wynik: Hau! (wywołuje przesłoniętą metodę)
# Przykład w Python
class Animal:
def make_sound(self):
print("Ogólny dźwięk zwierzęcia")
class Dog(Animal):
def make_sound(self): # Przesłonięcie metody
print("Hau!")
# Użycie
# animal = Animal()
# animal.make_sound() # Wynik: Ogólny dźwięk zwierzęcia
#
# dog = Dog()
# dog.make_sound() # Wynik: Hau!