Junior
Šta je nasledjivanje i polimorfizam u referentnim tipovima podataka?
sobes.tech АИ
Одговор од АИ
Nasleđivanje — to je mehanizam koji omogućava novoj klasi (potklasi/ćerki klasi) da nasleđuje osobine (polja) i ponašanje (metode) postojeće klase (superklase/roditeljske klase), proširujući ili prepisujući funkcionalnost. To doprinosi ponovnoj upotrebi koda i uspostavljanju odnosa "jest" (is-a).
Polimorfizam — to je mogućnost objekata različitih klasa da na isti naziv metode odgovaraju na različite načine, u zavisnosti od svog konkretnog tipa tokom izvršenja. On obezbeđuje fleksibilnost i proširivost koda, omogućavajući obradu objekata potklasa putem reference na superklasu.
U referentnim tipovima podataka (klasama), ove koncepcije igraju ključnu ulogu:
- Nasleđivanje: Potklasa dobija pristup članovima superklase i može dodavati svoje ili menjati ponašanje nasleđenih metoda (prepisivanje - overriding). Objekt potklase može biti korišćen svuda gde se očekuje objekat superklase.
- Polimorfizam: Različiti objekti, koji pripadaju istoj hijerarhiji nasleđivanja, mogu biti obrađeni istim kodom, pozivajući istu metodu, ali će se izvršiti implementacija te metode, specifična za konkretan tip objekta tokom izvršenja.
Primer u Javi:
// Superklasa (roditeljska)
class Animal {
public void makeSound() {
System.out.println("Izduje zvuk");
}
}
// Potklasa (ćerka klasa), nasleđuje od Animal
class Dog extends Animal {
// Prepisivanje metode iz superklase
@Override
public void makeSound() {
System.out.println("Gav!");
}
}
// Potklasa (ćerka klasa), nasleđuje od Animal
class Cat extends Animal {
// Prepisivanje metode iz superklase
@Override
public void makeSound() {
System.out.println("Mjau!");
}
}
// Primer polimorfizma
public class PolymorphismExample {
public static void main(String[] args) {
Animal myAnimal = new Animal(); // objekat superklase
Animal myDog = new Dog(); // objekat potklase, referenca na superklasu
Animal myCat = new Cat(); // objekat potklase, referenca na superklasu
myAnimal.makeSound(); // Ispisaće: Izduje zvuk
myDog.makeSound(); // Ispisaće: Gav! (polimorfizam - poziva se metoda Dog)
myCat.makeSound(); // Ispisaće: Mjau! (polimorfizam - poziva se metoda Cat)
}
}