2.6. Öröklődés

iDevice ikon

Összetettebb programokban az osztályok hierarchikus rendszert alkotnak. Az öröklődés (inheritance) segítségével egy-egy osztályból alosztályokat képezhetünk, az így létrejövő új osztály örökli az ősosztálya (használatos még a szülőosztály vagy szuperosztály elnevezés is) összes tulajdonságát és műveleteit. A leszármazott osztály elemei emiatt reagálnak az ősben definiált metódushívásokra.(metódushívás: az osztály egy metódusában levő programkód elindítása). Az öröklődés során a leszármazott osztályok kiterjeszthetőek, új tulajdonságokkal (új változók, további eljárások) rendelkezhetnek. Példaként nézzük meg a következő ábrán lévő szerkezetet:

7. ábra
öröklődés

A definíciók a következők lehetnek:

osztály: gépjármű

ősosztálya: [nincsen]
tulajdonságok:      gyártás_éve
                    lökettérfogat
                    alvázszám
              ...
metódusok: ...

osztály: személygépkocsi
ősosztálya: gépjármű
tulajdonságok:    kerekek_száma = 4
legnagyobb_sebesség
szín
ár
...
metódusok:        beindít
leállít
...

osztály: BMW
ősosztálya: személygépkocsi
tulajdonságok:    felszerelés
...
metódusok:        ablakmozgatás...


Az én BMW-m objektum a new konstrukciós eljárás hatására a BMW osztályból a gyártás éve, ár, szín ..., felszerelés paraméterekkel jön létre, örökli a rangsorban meghatározott metódusokat, mint pl. a beindít, leállít, stb.

Az osztályok öröklik a ősosztályok tulajdonságait, így azokat az osztályoknál nem kell megismételni. Csak azokat a tulajdonságokat kell megadni, amelyek az alosztályra jellemzőek. A példában a szín a gépjárművek osztályban nem annyira lényeges, de a személygépkocsi osztályban igen.

A meghatározás megadható úgy is, hogy egy változónak értéket adnak. Az osztályváltozó ezután az összes alosztályban érvényes lesz, hacsak az alosztályban nem írják azt felül új értékkel. A személygépkocsi osztályban a kerekek száma = 4 azt jelenti, hogy gyártótól, típustól függetlenül az összes személygépkocsinak 4 kereke van.

Emellett szinte minden objektum-orientált programozási rendszerben létezik az összes osztályrangsor fölé rendelt ősosztály, amit object-nek neveznek. Minden meghatározott osztályrangsor gyökere az objekt egy példánya. A object-nek is vannak tulajdonságai, metódusai (pl. típus, karakteres formává alakítás, stb)