Treść książki

Przejdź do opcji czytnikaPrzejdź do nawigacjiPrzejdź do informacjiPrzejdź do stopki
programu.Naprzykładcosięstanie,jeślimamydwiemetodyonazwieshow,pierwsza
zparametremtypushort,adrugazparametremtypuint,iwywołujemymetodęshow
zargumentemtypuchar?Powiedzieliśmyprzedchwilą,żezostaniewywołanametoda,
którejparametrynajlepiejpasujądoargumentówwywołania.Ponieważtypshortjest
fibliższy”typowicharniżtypint,mogłobysięwydawać,żezostaniewywołanametoda
show(short).Tymczasemjakwiemywykonywanajestpromocjaargumentutypuchar
dotypuintibędziewywołanametodashow(int).
Jeżelinieznamydobrzemechanizmówautomatycznychkonwersji,towmetodachprze-
ciążonychspecykujmyżnąliczbęparametrówlubcałkowicieżnetypyparametrów.
Ogólnie,algorytmwyboruprzezkompilatorodpowiedniejmetodyprzeciążonejjestdość
skomplikowanyimożemiećzaskakujące,nieintuicyjnekonsekwencje(zob.specykację
językaJava[10]).Równieżztegopowodunależywyraźnieżnicowaćliczbęlubtypy
argumentów.
Zwróćmyteżuwagę,żeprzeciążaniefirozciągasięnażnerodzajemetod.Dwie
metodystatycznainiestatycznaotejsamejnazwie,aleożnychtypachlubliczbie
argumentówsąprzeciążone.Podobniejakmetodymożemyprzeciążaćkonstruktory.Znaczy
to,żewjednejklasiemożemymiećkilkawersjikonstruktorówzżnymiparametrami.
Wtensposóbudostępniamyżnesposobyinicjowaniaobiektówklasy.
Wtakimprzypadku,byniepowtarzaćwspólnegokoduwżnychkonstruktorach,
wygodnaokazujesięmożliwośćwywoływaniakonstruktorazinnegokonstruktora.Dotakie-
gowywołaniastosujemysłowokluczowethis,coilustrujeponiższyfragmentskładni:
Vehicle(intw,inth,intl,intww){
this(null,w,h,l,ww);
}
Vehicle(Personp,intw,inth,intl,intww){
owner=p;
width=w;
height=h;
length=l;weight=ww;state=STOPPED;
}
Konstrukcjathis(iii)powinnabyćpierwsząinstrukcjąwcielekonstruktora.
1.6.Klasyiobiektyniezmienne
WróćmyjeszczenachwilędodenicjiklasyPerson.Jakwidzieliśmywramachnaszej
aplikacjijejobiektypoutworzeniuniemogązmieniaćswoichstanów(wtymprzypadku
wartościpólnameipesel).Takieniezmienne(immutable)klasyodgrywająważnąrolę
wprogramowaniu,bom.in:
1.6.Klasyiobiektyniezmienne
27