Junior
Aký je rozdiel medzi dedičstvom a polymorfizmom?
sobes.tech AI
Odpoveď od AI
Dedičstvo je mechanizmus, ktorý umožňuje triede (potomková trieda, odvodená trieda) dediť polia a metódy inej triedy (nadtrieda, supertrieda). To podporuje opakované použitie kódu.
Polymorfizmus je schopnosť používať rovnaké rozhranie na reprezentáciu rôznych základných foriem. V kontexte Javy to znamená, že referencia typu premennej môže odkazovať na objekt svojho vlastného typu alebo na objekt ktoréhokoľvek zo svojich podtypov. Rozlišujú sa polymorfizmus pri kompilácii (preťaženie metód) a pri behu (prepísanie metód).
Hlavný rozdiel:
- Dedičstvo definuje vzťahy medzi triedami (rodič-dieťa) a umožňuje opakované použitie kódu.
- Polymorfizmus umožňuje prístup k rôznym objektom cez spoločné rozhranie, vykonávajúc príslušnú metódu v závislosti od skutočného typu objektu počas behu.
Príklad polymorfizmu pri behu:
class Animal {
public void sound() {
System.out.println("Zviera vydáva zvuk");
}
}
class Dog extends Animal {
@Override
public void sound() {
System.out.println("Haf haf");
}
}
class Cat extends Animal {
@Override
public void sound() {
System.out.println("Mňau-mňau");
}
}
public class Main {
public static void main(String[] args) {
Animal myDog = new Dog(); // Polymorfizmus: premenná typu Animal odkazuje na objekt Dog
Animal myCat = new Cat(); // Polymorfizmus: premenná typu Animal odkazuje na objekt Cat
myDog.sound(); // Volá metódu sound() z triedy Dog
myCat.sound(); // Volá metódu sound() z triedy Cat
}
}