Junior
Čo je dedičnosť a polymorfizmus v referenčných typoch údajov?
sobes.tech AI
Odpoveď od AI
Dedičstvo — je mechanizmus, ktorý umožňuje novému triede (podtriede/dcérskej triede) dediť vlastnosti (polia) a správanie (metódy) existujúcej triedy (nadtriedy/rodičovskej triedy), rozširujúc alebo prepísaním funkčnosti. To prispieva k opakovanej použiteľnosti kódu a vytváraniu vzťahov "je" (is-a).
Polymorfizmus — je možnosťou objektov rôznych tried reagovať na rovnaké meno metódy rôznymi spôsobmi, v závislosti od ich konkrétneho typu počas behu. Zabezpečuje flexibilitu a rozšíriteľnosť kódu, umožňujúc spracovanie objektov podtried cez odkaz na nadtriedu.
V referenčných typoch dát (triedach) tieto koncepty zohrávajú kľúčovú úlohu:
- Dedičstvo: Podtrieda má prístup k členom nadtriedy a môže pridávať svoje vlastné alebo meniť správanie zdedených metód (prepísanie - overriding). Objekt podtriedy môže byť použitý kdekoľvek, kde sa očakáva objekt nadtriedy.
- Polymorfizmus: Rôzne objekty patriace do jednej dedičskej hierarchie môžu byť spracované rovnakým kódom, volajúc rovnakú metódu, ale bude vykonaná implementácia tejto metódy, špecifická pre konkrétny typ objektu počas behu.
Príklad v Jave:
// Nadtrieda (rodičovská)
class Animal {
public void makeSound() {
System.out.println("Vydáva zvuk");
}
}
// Podtrieda (dcérska), dedí od Animal
class Dog extends Animal {
// Prepísanie metódy z nadtriedy
@Override
public void makeSound() {
System.out.println("Hav!");
}
}
// Podtrieda (dcérska), dedí od Animal
class Cat extends Animal {
// Prepísanie metódy z nadtriedy
@Override
public void makeSound() {
System.out.println("Mňau!");
}
}
// Príklad polymorfizmu
public class PolymorphismExample {
public static void main(String[] args) {
Animal myAnimal = new Animal(); // objekt nadtriedy
Animal myDog = new Dog(); // objekt podtriedy, odkaz na nadtriedu
Animal myCat = new Cat(); // objekt podtriedy, odkaz na nadtriedu
myAnimal.makeSound(); // Vypíše: Vydáva zvuk
myDog.makeSound(); // Vypíše: Hav! (polymorfizmus - volá sa metóda Dog)
myCat.makeSound(); // Vypíše: Mňau! (polymorfizmus - volá sa metóda Cat)
}
}