Zpo-11-wyk-Slajd27: Różnice pomiędzy wersjami

Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania
Bwalter (dyskusja | edycje)
Nie podano opisu zmian
 
Bwalter (dyskusja | edycje)
Nie podano opisu zmian
 
Linia 1: Linia 1:
==Template Method: uczestnicy==
==Pull Up Constructor Body==


[[Image:zpo-11-wyk-Slajd27.PNG|Template Method: uczestnicy]]
[[Image:zpo-11-wyk-Slajd27.PNG|Pull Up Constructor Body]]




Klasa abstrakcyjna definiuje szkielet algorytmu w postaci metody, która z założenia nie powinna być pokrywana w klasach potomnych i często jest deklarowana jako sfinalizowana. Podklasy muszą dostarczyć implementacji metod abstrakcyjnych nadklasy oraz mogą pokryć niektóre inne odziedziczone metody.
Nieco innym problemem jest przeniesienie do nadklasy części konstruktora. Podstawową różnicą pomiędzy konstruktorem jest fakt, że konstruktor nie może być odziedziczony ani wywołany polimorficznie. Wywołanie konstruktora zawsze tworzy instancję określonej klasy, na rzecz której został wywołany. W przypadku dziedziczenia podklasa musi zawsze wywołać konstruktor nadklasy jako pierwszą instrukcję swojego konstruktora – i dlatego przenoszenie do nadklasy jego części różni się od zwykłego przeniesienia metody.


Instancja wybranej podklasy dziedziczy zatem szkielet algorytmu i część kroków algorytmu, oraz definiuje samodzielnie pozostałe kroki.
Przekształcenie zaczyna się od zadeklarowania konstruktora w nadklasie i przeniesienie do niego wspólnych fragmentów kodu konstruktorów z podklas. Następnie w konstruktorach podklas należy wywołać konstruktor nadklasy jako pierwszą instrukcję (poprzez kwalifikator ''super'' ).




[[zpo-11-wyk-Slajd26 | << Poprzedni slajd]] | [[zpo-11-wyk-toc|Spis treści ]] | [[zpo-11-wyk-Slajd28 | Następny slajd >>]]
[[zpo-11-wyk-Slajd26 | << Poprzedni slajd]] | [[zpo-11-wyk-toc|Spis treści ]] | [[zpo-11-wyk-Slajd28 | Następny slajd >>]]

Aktualna wersja na dzień 17:36, 4 lis 2006

Pull Up Constructor Body

Pull Up Constructor Body


Nieco innym problemem jest przeniesienie do nadklasy części konstruktora. Podstawową różnicą pomiędzy konstruktorem jest fakt, że konstruktor nie może być odziedziczony ani wywołany polimorficznie. Wywołanie konstruktora zawsze tworzy instancję określonej klasy, na rzecz której został wywołany. W przypadku dziedziczenia podklasa musi zawsze wywołać konstruktor nadklasy jako pierwszą instrukcję swojego konstruktora – i dlatego przenoszenie do nadklasy jego części różni się od zwykłego przeniesienia metody.

Przekształcenie zaczyna się od zadeklarowania konstruktora w nadklasie i przeniesienie do niego wspólnych fragmentów kodu konstruktorów z podklas. Następnie w konstruktorach podklas należy wywołać konstruktor nadklasy jako pierwszą instrukcję (poprzez kwalifikator super ).


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