Sobes.tech
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
    }
}