Co je to dědičnost a polymorfismus v kontextu referenčních datových typů?
sobes.tech AI
Odpověď od AI
Dědičnost je mechanismus, který umožňuje vytvářet nové třídy (odvozené, potomci), jež dědí pole a metody existující třídy (základní, rodičovská). To podporuje opakované použití kódu a tvorbu hierarchií tříd.
Polymorfismus je schopnost objektů různých tříd chovat se jednotně nebo mít odlišné chování při volání téže metody. Rozlišují se dva hlavní typy: statický (přetížení metod) a dynamický (přepsání metod).
V kontextu referenčních datových typů umožňuje dědičnost vytvořit proměnnou základní třídy, která může odkazovat na objekt odvozené třídy. V tomto případě se polymorfismus projevuje tím, že při volání metody přes takovou proměnnou se vykoná verze metody z reálného typu objektu, nikoliv z typu odkazu (dynamický polymorfismus).
Příklad v jazyce Java:
// Základní třída
class Animal {
public void makeSound() {
System.out.println("Vydává zvuk");
}
}
// Odvozená třída 1
class Dog extends Animal {
@Override
public void makeSound() {
System.out.println("Haf haf");
}
}
// Odvozená třída 2
class Cat extends Animal {
@Override
public void makeSound() {
System.out.println("Mňau mňau");
}
}
class Main {
public static void main(String[] args) {
Animal myDog = new Dog(); // Proměnná typu Animal odkazující na objekt Dog
Animal myCat = new Cat(); // Proměnná typu Animal odkazující na objekt Cat
myDog.makeSound(); // Volá metodu z Dog (polymorfismus)
myCat.makeSound(); // Volá metodu z Cat (polymorfismus)
}
}
V tomto příkladu mají myDog a myCat referenční typ Animal, ale díky polymorfismu při volání makeSound() se vykoná odpovídající implementace z Dog a Cat.