Ce mecanisme de implementare a polimorfismului există în Java?
sobes.tech AI
Răspuns de la AI
-
Polimorfismul în timpul compilării (polimorfism static): Se realizează prin suprasarcina metodelor (method overloading). Metodele au același nume, dar semnături diferite (număr, tip sau ordinea argumentelor).
class Calculator { // Suprasarcina metodei add public int add(int a, int b) { return a + b; } public double add(double a, double b) { return a + b; } } -
Polimorfismul în timpul execuției (polimorfism dinamic): Se realizează prin suprascrierea metodelor (method overriding). Metoda din clasa derivată are aceeași semnătură cu metoda din clasa părinte și oferă o implementare proprie. Decizia despre ce metodă să fie apelată se ia în timpul execuției, în funcție de tipul real al obiectului.
class Animal { public void sound() { System.out.println("Animalul face un sunet"); } } class Dog extends Animal { // Suprascrierea metodei sound @Override public void sound() { System.out.println("Câinele latră"); } } class Cat extends Animal { // Suprascrierea metodei sound @Override public void sound() { System.out.println("Pisica miaună"); } } -
Referințe la superclasă / interfață: Obiectele subclasei pot fi atribuite referințelor de superclasă sau interfețe pe care le implementează. Acest lucru permite tratarea uniformă a obiectelor de tipuri diferite printr-o referință comună. Apelul unei metode suprascrise printr-o astfel de referință duce la executarea versiunii metodei din tipul real al obiectului.
Animal myAnimal = new Dog(); // Atribuire unui obiect Dog la o referință de tip Animal myAnimal.sound(); // Se apelează metoda suprascrisă sound() din clasa Dog