Zpo-1-wyk-Slajd19

From Studia Informatyczne

Dziedziczenie klas a dziedziczenie interfejsów

Dziedziczenie klas a dziedziczenie interfejsów


Interfejsy, podobnie jak klasy, mogą być dziedziczone. Jak wcześniej powiedziano, dziedziczenie klas tworzy nowy podtyp i jednocześnie przekazuje do podklasy implementację. Natomiast dziedziczenie interfejsu powoduje jedynie utworzenie podtypu, który może być niezależnie zaimplementowany przez nową klasę.

W przedstawionym przykładzie interfejs Zegar cyfrowy dziedziczy po interfejsie Czasomierz. Każdy z nich posiada własną implementację, odpowiednio w postaci klas Zegar ścienny i Zegarek ręczny. W efekcie klasa Zegarek ręczny może być stosowana w zastępstwie Zegara ściennego (ponieważ wypełnia jego kontrakt – potrafi mierzyć czas), co oznacza, że za pomocą interfejsów osiągnięto efekt identyczny jak w przypadku dziedziczenia. Jednak Zegarek ręczny nie dziedziczy implementacji Zegara ściennego, w związku z czym modyfikacja tej klasy nie ma żadnego wpływu na klasę Zegarek ręczny.

Przykład ten wskazuje, że użycie interfejsów powoduje powstanie słabszych zależności pomiędzy klasami niż w przypadku dziedziczenia.


<< Poprzedni slajd | Spis treści | Następny slajd >>