ZSBD-2st-1.2-w5.tresc-1.1-Slajd12
Dziedziczenie
Zdefiniowane przez użytkownika typy danych mogą być specjalizowane za pomocą mechanizmu dziedziczenia. W typach pochodnych w sposób przyrostowy definiuje się różnice między typem pochodnym i bazowym. W typie pochodnym do cech odziedziczonych z typu bazowego można dodać nowe atrybuty, nowe operacje, redefiniować kod odziedziczonych operacji lub zaimplementować kod odziedziczonej operacji abstrakcyjnej. Operacje abstrakcyjne mają zdefiniowaną składnię, ale nie posiadają implementacji. Ich zastosowaniem są typy danych, które służą jedynie jako typy bazowe dla innych docelowych typów danych.
Na slajdzie przedstawiono definicje dwóch typów: typu bazowego „Figura ” i dziedziczącego po nim typu pochodnego „Koło ”. Typ bazowy „Figura ” jest typem abstrakcyjnym, ma dwie abstrakcyjne operacje: „przesuń ” i „powierzchnia ”. Abstrakcyjność tych operacji, jak i całego typu deklaruje się w sposób jawny za pomocą słowa kluczowego: „non instantiable ”. Z kolei słowo kluczowe „not final ” oznacza, że typ ten może służyć jako typ bazowy. Typ Koło dziedziczy po typie „Figura ” atrybut o nazwie „typ ” i dwie wymienione metody abstrakcyjne. Definicja typu „Koło ” zawiera dwa dodatkowe atrybuty: „środek ” i „promień ”, oraz implementację odziedziczonych operacji abstrakcyjnych. Za pomocą słowa kluczowego „overriding ” definicja typu „Koło ” jawnie informuje o redefinicji odziedziczonych operacji. Na slajdzie nie przedstawiono wymaganej w tym wypadku implementacji operacji.