Š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.