Sobes.tech
Junior

Koja je razlika između nasleđivanja i polimorfizma?

sobes.tech АИ

Одговор од АИ

Nasleđivanje je mehanizam koji omogućava klasi (potklasa, izvedena klasa) da nasledi polja i metode druge klase (roditeljska, superklasa). To podstiče ponovnu upotrebu koda.

Polimorfizam je mogućnost korišćenja istog interfejsa za predstavljanje različitih osnovnih oblika. U kontekstu Jave, to znači da referentna promenljiva može ukazivati na objekat svog sopstvenog tipa ili na objekat bilo kog od njegovih podtipova. Razlikuju se polimorfizam u vreme kompajliranja (preopterećenje metoda) i u vreme izvršavanja (prepisivanje metoda).

Glavna razlika:

  • Nasleđivanje definiše odnose između klasa (roditelj-ćerka) i omogućava ponovnu upotrebu koda.
  • Polimorfizam omogućava pristup različitim objektima putem zajedničkog interfejsa, izvršavajući odgovarajuću metodu u zavisnosti od stvarnog tipa objekta tokom izvršavanja.

Primer polimorfizma u vreme izvršavanja:

class Animal {
    public void sound() {
        System.out.println("Životinja pravi zvuk");
    }
}

class Dog extends Animal {
    @Override
    public void sound() {
        System.out.println("Gau-gau");
    }
}

class Cat extends Animal {
    @Override
    public void sound() {
        System.out.println("Mijau-mijau");
    }
}

public class Main {
    public static void main(String[] args) {
        Animal myDog = new Dog(); // Polimorfizam: promenljiva tipa Animal koja referencira objekat Dog
        Animal myCat = new Cat(); // Polimorfizam: promenljiva tipa Animal koja referencira objekat Cat

        myDog.sound(); // Poziva metodu sound() iz klase Dog
        myCat.sound(); // Poziva metodu sound() iz klase Cat
    }
}