Junior
Jaka jest różnica między dziedziczeniem a polimorfizmem?
sobes.tech AI
Odpowiedź od AI
Dziedziczenie to mechanizm umożliwiający klasie (klasa potomna, podklasa) dziedziczenie pól i metod innej klasy (klasa nadrzędna, superklasa). To sprzyja ponownemu użyciu kodu.
Polimorfizm to możliwość użycia tego samego interfejsu do reprezentowania różnych podstawowych form. W kontekście Java oznacza to, że zmienna referencyjna może odwoływać się do obiektu własnego typu lub do obiektu dowolnego z jego podtypów. Wyróżnia się polimorfizm czasu kompilacji (przeciążanie metod) i czasu wykonania (nadpisywanie metod).
Główna różnica:
- Dziedziczenie definiuje relacje między klasami (rodzic-dziecko) i pozwala na ponowne użycie kodu.
- Polimorfizm pozwala na dostęp do różnych obiektów przez wspólny interfejs, wykonując odpowiednią metodę w zależności od faktycznego typu obiektu w czasie wykonywania.
Przykład polimorfizmu czasu wykonania:
class Animal {
public void sound() {
System.out.println("Zwierzę wydaje dźwięk");
}
}
class Dog extends Animal {
@Override
public void sound() {
System.out.println("Hau hau");
}
}
class Cat extends Animal {
@Override
public void sound() {
System.out.println("Miau miau");
}
}
public class Main {
public static void main(String[] args) {
Animal myDog = new Dog(); // Polimorfizm: zmienna typu Animal odwołuje się do obiektu Dog
Animal myCat = new Cat(); // Polimorfizm: zmienna typu Animal odwołuje się do obiektu Cat
myDog.sound(); // Wywołuje metodę sound() z klasy Dog
myCat.sound(); // Wywołuje metodę sound() z klasy Cat
}
}