Zpo-11-wyk-Slajd27: Różnice pomiędzy wersjami
Nie podano opisu zmian |
Nie podano opisu zmian |
||
Linia 1: | Linia 1: | ||
== | ==Pull Up Constructor Body== | ||
[[Image:zpo-11-wyk-Slajd27.PNG| | [[Image:zpo-11-wyk-Slajd27.PNG|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'' ). | |||
[[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
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 ).