Ce sunt moștenirea și polimorfismul în contextul tipurilor de date de referință?
sobes.tech AI
Răspuns de la AI
Moștenirea este un mecanism care permite crearea unei noi clase (derivată, fiică), care moștenește câmpurile și metodele unei clase existente (de bază, părinte). Acest lucru favorizează reutilizarea codului și crearea ierarhiilor de clase.
Polimorfismul este capacitatea obiectelor din clase diferite de a se comporta în mod uniform sau de a avea comportamente diferite atunci când se invocă aceeași metodă. Se disting două tipuri principale: static (supraincarcarea metodelor) și dinamic (suprascrierea metodelor).
În contextul tipurilor de date de referință, moștenirea permite crearea unei variabile de clasă de bază care poate face referire la un obiect al clasei derivate. În acest caz, polimorfismul se manifestă prin faptul că, la apelarea unei metode prin această variabilă, se va executa versiunea metodei din tipul real al obiectului, nu din tipul referinței (polimorfism dinamic).
Exemplu în Java:
// Clasa de bază
class Animal {
public void makeSound() {
System.out.println("Emite un sunet");
}
}
// Clasa derivată 1
class Dog extends Animal {
@Override
public void makeSound() {
System.out.println("Ham ham");
}
}
// Clasa derivată 2
class Cat extends Animal {
@Override
public void makeSound() {
System.out.println("Miau miau");
}
}
class Main {
public static void main(String[] args) {
Animal myDog = new Dog(); // Variabilă de tip Animal referindu-se la un obiect Dog
Animal myCat = new Cat(); // Variabilă de tip Animal referindu-se la un obiect Cat
myDog.makeSound(); // Apelează metoda din Dog (polimorfism)
myCat.makeSound(); // Apelează metoda din Cat (polimorfism)
}
}
În acest exemplu, myDog și myCat au tipul de referință Animal, dar datorită polimorfismului, la apelarea makeSound(), se execută implementarea corespunzătoare din Dog și Cat.