Čo je dedičstvo a polymorfizmus v kontexte referenčných typov údajov?
sobes.tech AI
Odpoveď od AI
Dedičstvo je mechanizmus, ktorý umožňuje vytvoriť nový triedu (odvodenú, dcérsku), ktorá dedí polia a metódy existujúcej triedy (základnej, rodičovskej). To podporuje opakované použitie kódu a tvorbu hierarchií tried.
Polymorfizmus je schopnosť objektov rôznych tried správať sa jednotne alebo mať odlišné správanie pri volaní tej istej metódy. Rozlišujú sa dva hlavné typy: statický (preťaženie metód) a dynamický (prepísanie metód).
V kontexte referenčných dátových typov umožňuje dedičstvo vytvoriť premennú základnej triedy, ktorá môže odkazovať na objekt odvodenéj triedy. V tomto prípade sa polymorfizmus prejavuje tým, že pri volaní metódy cez takúto premennú sa vykoná verzia metódy z reálneho typu objektu, nie z typu odkazu (dynamický polymorfizmus).
Príklad v jazyku Java:
// Základná trieda
class Animal {
public void makeSound() {
System.out.println("Vydáva zvuk");
}
}
// Odvodená trieda 1
class Dog extends Animal {
@Override
public void makeSound() {
System.out.println("Hav hav");
}
}
// Odvodená trieda 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(); // Premenná typu Animal odkazujúca na objekt Dog
Animal myCat = new Cat(); // Premenná typu Animal odkazujúca na objekt Cat
myDog.makeSound(); // Volá metódu z Dog (polymorfizmus)
myCat.makeSound(); // Volá metódu z Cat (polymorfizmus)
}
}
V tomto príklade majú myDog a myCat referenčný typ Animal, ale vďaka polymorfizmu, pri volaní makeSound() sa vykoná implementácia z Dog a Cat.