Zpo-8-wyk-Slajd27
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 ).