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.