Treść książki

Przejdź do opcji czytnikaPrzejdź do nawigacjiPrzejdź do informacjiPrzejdź do stopki
1.5.Przeciążaniemetodikonstruktorów
Wklasie(i/lubjejklasachpochodnych)możemyzdeniowaćmetodyotejsamejnazwie,
ależniącesięliczbąi/lubtypamiparametrów.Nazywasiętoprzeciążaniemmetod.
Pocoistniejetakamożliwość?Wyobraźmysobie,żenaobiektachklasyparliczbcałko-
witych(znanejnamzpoprzednichrozdziałów)chcielibyśmywykonywaćoperacje:
dodawaniainnychobiektów-par,
dodawania(doskładnikówpary)kolejnodwóchpodanychliczbcałkowitych,
dodawania(dokażdegoskładnikapary)tejsamejpodanejliczbycałkowitej.
Gdybyniebyłoprzeciążaniametod,musielibyśmydlakażdejoperacjiwymyślaćinną
nazwęmetody.Aprzecieżistotaoperacjijesttakasama(więcwystarczynazwaadd),ajej
użyciepowinnobyćjasnezkontekstu(określanegoprzezargumenty).
DziękiprzeciążaniumożnawklasieParazdeniowaćnp.metody:
voidadd(Parap)
//dodajedopary,narzeczktórejwywołanometodę,parę
//podaną
jakoargument
voidadd(inti)
//doobuskładnikówparydodajepodanąliczbę
voidadd(inti,intk)//pierwsząpodanąliczbędodajedopierwszegoskładnika
//paryadrugądodrugiego
iużyćgdzieindziejwnaturalnysposób:
Parap;i
ParajakasPara;
iiii
piadd(3);
//wybieranajesttametoda,którapasuje(najlepiej)doargumentów
piadd(1,2);
piadd(jakasPara);
Innymprzykłademprzeciążonejmetodyjestprintln(iii).Maonabardzowiele
wersjizargumentamiżnychtypów(m.in.wszystkichprostych,StringiObject).
Ibardzodobrze,bowprzeciwnymprzypadkumusielibyśmypisaćnp.printInt(3)
iprintString("Ala"),abywyświetlićodpowiednioliczbęcałkowitąinapis.
Identykatorymetoddeniowanychwklasiemusząbyćodsiebieżne.Wyjątkiem
sąmetodyprzeciążone,tj.takie,któremajątęsamąnazwę(identykator),ależne
typyi/lubliczbęargumentów.
Zprzeciążaniemmetodzwiązanyjestpewienproblem.Otóżwywołaniedoodpowied-
niejwersjimetodydopasowujekompilator,napodstawieliczbyitypówargumentów.Musi-
myprzytymuważać,bokiedyliczbaparametrówwżnychwersjachmetodyprzeciążonej
jesttakasama,aichtypyzbliżonetomożesięokazać,żeźleinterpretujemydziałanie
26
1.Klasy