Junior
Care este diferența dintre moștenire și polimorfism?
sobes.tech AI
Răspuns de la AI
Moștenirea este un mecanism care permite unei clase (subclasă, clasă derivată) să moștenească câmpuri și metode ale altei clase (superclasă, clasă de bază). Acest lucru promovează reutilizarea codului.
Polimorfismul este capacitatea de a folosi aceeași interfață pentru a reprezenta forme diferite de bază. În contextul Java, aceasta înseamnă că o variabilă de tip referință poate face referire la un obiect de propriul său tip sau la un obiect al oricărui subtip al său. Se disting polimorfismul în timpul compilării (supraincarcarea metodelor) și polimorfismul în timpul execuției (suprabușirea metodelor).
Diferența principală:
- Moștenirea definește relații între clase (părinte-copil) și permite reutilizarea codului.
- Polimorfismul permite accesul la diferite obiecte printr-o interfață comună, executând metoda corespunzătoare în funcție de tipul real al obiectului în timpul execuției.
Exemplu de polimorfism în timpul execuției:
class Animal {
public void sound() {
System.out.println("Animalul face un sunet");
}
}
class Dog extends Animal {
@Override
public void sound() {
System.out.println("Ham-ham");
}
}
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(); // Polimorfism: variabilă de tip Animal care face referire la un obiect Dog
Animal myCat = new Cat(); // Polimorfism: variabilă de tip Animal care face referire la un obiect Cat
myDog.sound(); // Apelează metoda sound() din clasa Dog
myCat.sound(); // Apelează metoda sound() din clasa Cat
}
}