Sobes.tech
Junior

Ce sunt moștenirea și polimorfismul în tipurile de date referință?

sobes.tech AI

Răspuns de la AI

Moștenirea este un mecanism care permite unei clase (clasa derivată, clasa copil) să preia proprietățile și comportamentul altei clase (clasa de bază, clasa părinte). Acest lucru promovează reutilizarea codului și crearea ierarhiilor de clase.

Polimorfismul este capacitatea obiectelor din clase diferite de a răspunde diferit la aceeași mesaj (apel de metodă), în funcție de tipul lor concret. În contextul moștenirii, acest lucru se manifestă adesea prin suprascrierea metodelor clasei de bază în clasa derivată.

Exemplu (Java):

// Clasa de bază
class Animal {
    public void makeSound() {
        System.out.println("Animalul face un sunet");
    }
}

// Clasa derivată
class Dog extends Animal {
    @Override // Suprascrierea metodei
    public void makeSound() {
        System.out.println("Ham!");
    }
}

// Clasa derivată
class Cat extends Animal {
    @Override // Suprascrierea metodei
    public void makeSound() {
        System.out.println("Miau!");
    }
}

class Main {
    public static void main(String[] args) {
        Animal myDog = new Dog(); // Obiect Dog, dar referință de tip Animal
        Animal myCat = new Cat(); // Obiect Cat, dar referință de tip Animal

        myDog.makeSound(); // Se apelează metoda Dog
        myCat.makeSound(); // Se apelează metoda Cat
    }
}

În acest exemplu:

  • Moștenire: Clasele Dog și Cat moștenesc de la Animal.
  • Polimorfism: Variabilele myDog și myCat fac referire la obiecte Dog și Cat respectiv, chiar dacă au tipul Animal. La apelarea makeSound(), se execută metoda obiectului, nu cea a tipului de referință.