Junior
Co jsou dědičnost a polymorfismus v referenčních typech dat?
sobes.tech AI
Odpověď od AI
Dědičnost je mechanismus, který umožňuje jedné třídě (potomková třída, odvozená třída) dědit vlastnosti a chování jiné třídy (základní třída, rodičovská třída). To podporuje opakované použití kódu a vytváření hierarchií tříd.
Polymorfismus je schopnost objektů různých tříd reagovat na stejnou zprávu (volání metody) různým způsobem, v závislosti na jejich konkrétním typu. V kontextu dědičnosti se to často projevuje přepsáním metod základní třídy v odvozené třídě.
Příklad (Java):
// Základní třída
class Animal {
public void makeSound() {
System.out.println("Zvíře vydává zvuk");
}
}
// Odvozená třída
class Dog extends Animal {
@Override // Přepsání metody
public void makeSound() {
System.out.println("Haf!");
}
}
// Odvozená třída
class Cat extends Animal {
@Override // Přepsání metody
public void makeSound() {
System.out.println("Mňau!");
}
}
class Main {
public static void main(String[] args) {
Animal myDog = new Dog(); // Objekt Dog, ale odkaz typu Animal
Animal myCat = new Cat(); // Objekt Cat, ale odkaz typu Animal
myDog.makeSound(); // Volá metodu Dog
myCat.makeSound(); // Volá metodu Cat
}
}
V tomto příkladu:
- Dědičnost: Třídy
DogaCatdědí odAnimal. - Polymorfismus: Proměnné
myDogamyCatodkazují na objektyDogaCatrespektive, i když mají typAnimal. Při volánímakeSound()se spustí metoda objektu, nikoliv typu odkazu.