Junior
Jaký je rozdíl mezi dědičností a polymorfismem?
sobes.tech AI
Odpověď od AI
Dědičnost je mechanismus, který umožňuje třídě (potomková třída, odvozená třída) dědit pole a metody jiné třídy (nadřazená třída, supertřída). To podporuje opakované použití kódu.
Polymorfismus je schopnost používat stejný rozhraní k reprezentaci různých základních forem. V kontextu Java to znamená, že proměnná referenčního typu může odkazovat na objekt svého vlastního typu nebo na objekt jakéhokoli ze svých podtypů. Rozlišují se polymorfismus při kompilaci (přetížení metod) a při běhu (přepsání metod).
Hlavní rozdíl:
- Dědičnost definuje vztahy mezi třídami (rodič-dítě) a umožňuje opakované použití kódu.
- Polymorfismus umožňuje přistupovat k různým objektům přes společné rozhraní, přičemž se vykoná odpovídající metoda podle skutečného typu objektu při běhu.
Příklad polymorfismu při běhu:
class Animal {
public void sound() {
System.out.println("Zvíře vydává 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(); // Polymorfismus: proměnná typu Animal odkazuje na objekt Dog
Animal myCat = new Cat(); // Polymorfismus: proměnná typu Animal odkazuje na objekt Cat
myDog.sound(); // Volá metodu sound() třídy Dog
myCat.sound(); // Volá metodu sound() třídy Cat
}
}