W dzisiejszym poście chciałbym poruszyć temat dziedziczenia w języku C#.

Czym jest dziedziczenie? W jaki sposób poprawnie używać dziedziczenia?
Klasy bazowa i pochodna, odwołanie do klasy bazowej, wielokrotne dziedziczenie.

Zaczynamy!

Czym jest dziedziczenie?

Dziedziczenie to kluczowy mechanizm obiektowości. Dziedziczenie pozwala na powielanie funkcjonalności wobec różnych klas w ten sposób nie musimy pisać ciągle samego kodu.

Dziedziczenie jest również jednym z najważniejszych pojęć w programowaniu obiektowym. Dziedziczenie pozwala na powielanie funkcjonalności wobec różnych klas, przez co nie musimy pisać ciągle samego kodu, co daje możliwość ponowego wykorzystania kodu, co pozwoli nam na zaoszczędzenie czasu podczas jego implementacji.

Podczas tworzenia nowej klasy, zamiast pisać zupełnie od nowa wszystkie składowe tej klasy, Ty jako programista możesz postanowić, że nowa klasa ma dziedziczyć z istniejącej już klasy. Istniejąca klasa nazywana jest klasą bazową a nowa klasa dziedzicząca po klasie bazowej nosi nazwę klasy pochodnej.

Idea dziedziczenia realizuje związek to-jest (IS-A). Wiele doświadczonych programistów (w czytanych przeze mnie blogach, czy artykuałach o programowaniu) przytacza przykład psa jako zobrazowanie definicji dziedziczenia. Więc i ja przytoczę to porównanie: ssak ‘to-jest’ zwierzę, pies ‘to-jest’ ssak ale pies ‘to-jest’ też zwierzę, i tak dalej.

Klasa bazowa i pochodna

Klasa może dziedziczyć z jednej klasy, ale może implementować wiele interfejsów.

Składnia dziedziczenia:

Przejdźmy przez poniższy przykład, który w czytelniejszy sposób pomoże nam zrozumieć idee dziedziczenia:

 

 

 

Odwołanie do klasy bazowej

Klasa pochodna dziedziczy składowe klasy bazowej, tj. pola, metody. Podczas dziedziczenia wielokrotnie pojawi się potrzeba uzyskania dostępu do składowych klasy bazowej. Dostęp do takich pól czy metod jest możliwy po użyciu słowa kluczowego base. Może ono zostać również użyte do przekazania parametrów konstruktora do klasy bazowej. Poniżej przykład, który pozwoli lepiej zrozumieć regułu użycia słowa kluczowego base:

 

Wielokrotne dziedziczenie

W programowaniu obiektowym często się zdarza że musimy używać zupełnie odrębnych klas w ten sam sposób. Aby to było możliwe musimy w jakiś sposób zadeklarować że grupa klas oferuje podobną funkcjonalność. Tytuł punktu jest nieco przewrotny, bo akurat właśnie wielokrotne dziedziczenie (jawne) język C# niestety nie obsługuje wielokrotnego dziedziczenia. Tu należy pamiętać, że klasa może dziedziczyć po jednej klasie bazowej, ale może implementować wiele interfejsów (Interfejsom poświece osobny post).

Do przedstawienia na jakiej zasadzie działa użyje dobrze znanego nam prostokątu.

Pytania? sugestie? piszcie komentujcie.

Oczywiście cały Przykłady dostępne na GitHubie.

 

 

Post Author: Csharpowe Zmagania

Dodaj komentarz

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

This site uses Akismet to reduce spam. Learn how your comment data is processed.