Dziedziczenie

Dziedziczenie (ang. inheritance) jest to mechanizm, pozwalający współdzielić pola (atrybuty), metody, funkcje pomiędzy klasami. Klasa B może dziedziczyć po klasie A, dzięki temu klasa B może mieć jednocześnie własne atrybuty i funkcje oraz wszystkie atrybuty i metody z klasy A. Klasa A w tym przypadku nazywa się klasą bazową (ang. superclass albo base class), natomiast klasa B – klasą pochodną (ang. subclass). Po klasie bazowej może dziedziczyć dowolna liczba klas pochodnych.

Powyższy opis dobrze zobrazuje poniższy diagram, na którym znajduje się bardzo uproszczony przykład z życia. Zauważ, że każde okno składa się z nazwy klasy (np: Animal), pól, które znajdują się w jej konstruktorze wraz z opisem ich typu (np: age: integer), oraz metod (np: sleep())

W połączeniu z poprzednim opisem możemy z niego wywnioskować:

  • klasa Animal (czyli zwierze) jest klasą bazową,
  • klasa Mammal (czyli ssak) dziedziczy po klasie Animal,
  • klasa Mammal jest zarówno klasą bazową jak i klasą pochodną,
  • klasy Dog, Human, Cat oraz Dolphin są klasami pochodnymi po klasie Mammal,
  • klasa Mammal ma dostęp do wszystkich pól (wiek, waga itd.) i metod (poluj, obudź itd.) z klasy Animal,
  • klasy dziedziczące po klasie Mammal (czyli Dog, Human, Cat oraz Dolphin) mają dostęp do wszystkich pól i metod z klasy Mammal, jak i zarówno z klasy Animal.
TIP: Cały powyższy diagram jest mocno umowny i opiera się bardzo luźno na faktycznych relacjach jakie zachodzą w przyrodzie 😉

W następnej lekcji zobaczymy jak to wygląda w praktyce.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *