Sobes.tech
Middle

Šta je nasledjivanje i polimorfizam u kontekstu referentnih tipova podataka?

sobes.tech АИ

Одговор од АИ

Nasleđivanje je mehanizam koji omogućava kreiranje nove klase (izvedene, ćerke), koja nasleđuje polja i metode postojeće klase (bazne, roditeljske). To podstiče ponovnu upotrebu koda i kreiranje hijerarhija klasa.

Polimorfizam je sposobnost objekata različitih klasa da se ponašaju na ujednačen način ili da imaju različito ponašanje pri pozivu iste metode. Postoje dve glavne vrste: statički (preopterećenje metoda) i dinamički (prepisivanje metoda).

U kontekstu referentnih tipova podataka, nasleđivanje omogućava kreiranje promenljive bazne klase koja može referisati na objekat izvedene klase. U ovom slučaju, polimorfizam se manifestuje u tome što će, pri pozivu metode putem takve promenljive, biti izvršena verzija metode iz stvarnog tipa objekta, a ne iz tipa reference (dinamički polimorfizam).

Primer u Javi:

// Bazna klasa
class Animal {
    public void makeSound() {
        System.out.println("Emituje zvuk");
    }
}

// Izvedena klasa 1
class Dog extends Animal {
    @Override
    public void makeSound() {
        System.out.println("Vau-vau");
    }
}

// Izvedena klasa 2
class Cat extends Animal {
    @Override
    public void makeSound() {
        System.out.println("Mij-mij");
    }
}

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

        myDog.makeSound(); // Poziva metodu iz Dog (polimorfizam)
        myCat.makeSound(); // Poziva metodu iz Cat (polimorfizam)
    }
}

U ovom primeru, myDog i myCat imaju referentni tip Animal, ali zahvaljujući polimorfizmu, pri pozivu makeSound() izvršava se odgovarajuća implementacija iz Dog i Cat.