8.13. Wywoływanie metod superklasy
Problem
Przedefiniowując metodę w subklasie, chcemy jedynie rozszerzyć lub „udekorować” zachowanie superklasy, bez jego totalnego przedefiniowywania.
Rozwiązanie
Wywołanie implementacji bieżącej metody w superklasie osiąga się za pomocą słowa kluczowego super
.
Słowo super
bez argumentów powoduje wywołanie wspomnianej metody z argumentami powielonymi z bieżącego wywołania (w subklasie). Oto klasa Receptura
definiująca (między innymi) metodę przygotuj_jedzenie
.
class Receptura # # ... pozostałe elementy definicji klasy Receptura # def przygotuj_jedzenie(kuchenka, czas_gotowania) garnek = przygotuj_produkty kuchenka << garnek wait_for(czas) return garnek end end
W poniższej subklasie modyfikujemy nieznacznie ...
Get Ruby. Receptury now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.