2.2 NASLEĐIVANJE

 

Nasleđivanje (engl. inheritance) jeste proces kojim jedan objekat dobija svojstva drugog objekta. Nasleđivanje je važno jer podržava koncepciju hijerarhijske klasifikacije (tj. odozgo nadole). Na primjer zlatni retriver je deo klase pas, koja je deo klase sisar, koja je deo veće klase životinja. Bez postojanja hijerarhije, za svaki objekat bi se morale eksplicitno zadati sve njegove karakteristike. Međutim, ako postoji nasleđivanje, za objekat treba definisati samo one karakteristike koje ga čine jedinstvenim u klasi. Opšta svojstva objekat može da nasledi od roditelja. Na taj način, nasleđivanje predstavlja mehanizam koji omogućuje da jedan objekat bude poseban slučaj nekog opštijeg objekta. Pogledajmo ovaj proces izbliza.

Većina ljudi smatra da je svjet prirodno sačinjen od objekata međusobno povezanih na hijerarhijski način, npr. životinja, sisara i pasa. Ako biste željeli da životinje opišete apstraktno, rekli biste da one imaju izvesne osobine, npr. veličinu, inteligenciju i vrstu skeletnog sistema. Životinje imaju i određene aspekte ponašanja; one jedu, dišu i spavaju. Ovakav opis osobina i ponašanja predstavlja definiciju klase životinja.

Ako želite da definišete određeniju klasu životinja, npr. sisare, oni bi takođe morali imati određenije osobine, npr. mlječne žlezde i tip zuba. Kažemo da su sisari potklasa (engl. subclass) životinja, a životinje su sisarima natklasa (engl. superclass).

Pošto su sisari samo uže definisane životinje, oni nasleđuju sve osobine životinja. Potklasa koja se nalazi duboko u hijerarhiji nasleđuje osobine svih svojih predaka u hijerarhiji klase.

Nasleđivanje je povezano i sa kapsuliranjem. Ako klasa kapsulira neke osobine, onda će svaka potklasa imati te osobine ali i osobine kojima se potklasa izdvaja . Ovo je ključna koncepcija koja omogućuje da složenost objektno orijentisanih programa raste linearnom, umesto geometrijskom progresijom. Nova potklasa nasleđuje sve osobine svih svojih predaka. Ona ne dolazi u dodir sa većinom ostalog koda u sistemu na nepredvidljiv način.