Junior
Czym są dziedziczenie i polimorfizm w typach danych referencyjnych?
sobes.tech AI
Odpowiedź od AI
Dziedziczenie to mechanizm pozwalający jednej klasie (klasie potomnej, klasie dziedziczącej) na przejęcie właściwości i zachowań innej klasy (klasy bazowej, klasy nadrzędnej). Sprzyja to ponownemu użyciu kodu i tworzeniu hierarchii klas.
Polimorfizm to zdolność obiektów różnych klas do reagowania na tę samą wiadomość (wywołanie metody) w różny sposób, w zależności od ich konkretnego typu. W kontekście dziedziczenia często objawia się to przez nadpisanie metod klasy bazowej w klasie potomnej.
Przykład (Java):
// Klasa bazowa
class Animal {
public void makeSound() {
System.out.println("Zwierzę wydaje dźwięk");
}
}
// Klasa potomna
class Dog extends Animal {
@Override // Nadpisanie metody
public void makeSound() {
System.out.println("Hau!");
}
}
// Klasa potomna
class Cat extends Animal {
@Override // Nadpisanie metody
public void makeSound() {
System.out.println("Miau!");
}
}
class Main {
public static void main(String[] args) {
Animal myDog = new Dog(); // Obiekt Dog, ale referencja typu Animal
Animal myCat = new Cat(); // Obiekt Cat, ale referencja typu Animal
myDog.makeSound(); // Wywołanie metody Dog
myCat.makeSound(); // Wywołanie metody Cat
}
}
W tym przykładzie:
- Dziedziczenie: Klasy
DogiCatdziedziczą poAnimal. - Polimorfizm: Zmienne
myDogimyCatodwołują się odpowiednio do obiektówDogiCat, mimo że mają typAnimal. Przy wywołaniumakeSound()wykonywana jest metoda obiektu, a nie typu referencji.