Sobes.tech
Middle

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