Treść książki
Przejdź do opcji czytnikaPrzejdź do nawigacjiPrzejdź do informacjiPrzejdź do stopki
classBextendsA{
voidmet1()throwsException{}
//błąd:ilustrujepkti1
voidmet2()throwsIOExcepetion{}//błąd:ilustrujepkti2
voidmet3()throwsFileNotFoundException,IOException{}//ok,ilustrujepkt2
voidmet4(){}
//ok,ilustrujepkt3
voidmet5()throwsNumberFormatException{}
//ok,ilustrujepkt4
}
2.9.Przedefiniowanieaprzeciążanie,
przesłanianieipokrywanie
Przedefiniowaniemetod(overriding)należyodróżniaćodichprzeciążania(over-
loading),atakżeoddwóchinnychpojęć:przesłaniania(shadowing)ipokrywania
(hiding)identyfikatorów(zmiennych,metod,klas).
Niewątpliwienajłatwiejodróżnićmetodyprzeciążone.Mająonepoprostutesamenazwy,
aleinnąliczbęi/lubtypyparametrów.Zwróćmyuwagę,że:
Przeciążonemetodymogąnależećdotejsamejklasylubróżnychklas(zktórychjedna
pośredniolubbezpośredniodziedziczyinną).
Przeciążanieniewykluczaprzedefiniowania:jeślinp.wklasieAzdefiniowanodwie
publicznemetodyztąsamąnazwą(cooznacza,żesąprzeciążone,bosygnatury
metoddeklarowanychwjednejklasiemusząsięróżnić),towklasieBdziedziczącej
klasęAmożemyjednąznichdodatkowoprzeciążyć(czylipodaćwdeklaracjiinny
zestawparametów),adrugąprzedefiniować(pozostawiającjejsygnaturębezzmian
idostarczającinnejdefinicjikodumetody).WtymwzględzieJavaróżnisięodC++.
Terminufiprzesłanianie”używasięwJaviewtedy,gdywzasięgudeklaracjiidentyfikatora
zmiennej,metodylubklasy(ogólniej:typu)pojawiasięinnadeklaracjategoidentyfikatora
(widzieliśmyprzykładyprzesłanianiaidentyfikatorówpólprzezidentyfikatoryzmiennych
lokalnych).
Wprzeciwieństwiedoprzesłanianiaterminówfiprzedefiniowanie”(metody)ifipokrycie”
(metodylubpola)używasięwsytuacjidziedziczenia.Czymróżnisiępokryciemetodyod
jejprzedefiniowania?Otóżdostarczeniewpodklasiedefinicjimetodystatycznejotejsamej
sygnaturzeitymsamymlubkowariantnymtypiewynikucometodastatycznaznadklasy
nazywasiępokryciemmetody.
Pokrywanieniedotyczymetodniestatycznych,cowięcej–jeśliwpodklasiedostarczy-
mydefinicjęmetodystatycznejotejsamejsygnaturzecometodaniestatycznanadklasy,
towystąpibłądwkompilacji.
Rozróżnieniepokryciaiprzedefiniowaniametodyzwiązanejestteżzpojęciempolimor-
fizmu(zob.następnepunkty):metodyprzedefiniowanesąwywoływanepolimorficznie,
pokryciezaśoznaczatylkozastąpieniewywołaniametodypokrytej.
2.9.Przedefiniowanieaprzeciążanie,przesłanianieipokrywanie
59