Dziedziczenie

Dziedziczenie (ang. inheritance) jest to mechanizm, pozwalający współdzielić pola (parametry), metody, funkcje pomiędzy klasami.

Dla przykładu:
Klasa B może dziedziczyć po klasie A, dzięki temu klasa B może mieć jednocześnie własne parametry i metody oraz wszystkie parametry 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 😉

Koncept nie jest łatwy dlatego w następnej lekcji zobaczymy jak to wygląda w praktyce aby poczuć moc dziedziczenia.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *