Sobes.tech
Junior

Čo je dedičstvo a polymorfizmus v referenčných typoch údajov?

sobes.tech AI

Odpoveď od AI

Dedičnosť je mechanizmus, ktorý umožňuje jednej triede (odvodenej triede, podtriede) dediť vlastnosti a správanie inej triedy (základnej triedy, rodičovskej triedy). To podporuje opätovné použitie kódu a vytváranie hierarchií tried.

Polymorfizmus je schopnosť objektov rôznych tried reagovať na rovnakú správu (volanie metódy) rôznym spôsobom, v závislosti od ich konkrétneho typu. V kontexte dedičnosti sa to často prejavuje prepísaním metód základnej triedy v odvodené triede.

Príklad (Java):

// Základná trieda
class Animal {
    public void makeSound() {
        System.out.println("Zviera vydáva zvuk");
    }
}

// Odvodená trieda
class Dog extends Animal {
    @Override // Prepísanie metódy
    public void makeSound() {
        System.out.println("Hav!");
    }
}

// Odvodená trieda
class Cat extends Animal {
    @Override // Prepísanie metódy
    public void makeSound() {
        System.out.println("Mňau!");
    }
}

class Main {
    public static void main(String[] args) {
        Animal myDog = new Dog(); // Objekt Dog, ale referencia typu Animal
        Animal myCat = new Cat(); // Objekt Cat, ale referencia typu Animal

        myDog.makeSound(); // Volá metódu Dog
        myCat.makeSound(); // Volá metódu Cat
    }
}

V tomto príklade:

  • Dedičnosť: Triedy Dog a Cat dedičia od Animal.
  • Polymorfizmus: Premenné myDog a myCat odkazujú na objekty Dog a Cat v poradí, hoci majú typ Animal. Pri volaní makeSound() sa vykoná metóda objektu, nie typu referencie.