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.Przedeniowanieaprzeciążanie,
przesłanianieipokrywanie
Przedeniowaniemetod(overriding)należyodróżniaćodichprzeciążania(over-
loading),atakżeoddwóchinnychpojęć:przesłaniania(shadowing)ipokrywania
(hiding)identykatorów(zmiennych,metod,klas).
Niewątpliwienajłatwiejodróżnićmetodyprzeciążone.Mająonepoprostutesamenazwy,
aleinnąliczbęi/lubtypyparametrów.Zwróćmyuwagę,że:
Przeciążonemetodymogąnależećdotejsamejklasylubżnychklas(zktórychjedna
pośredniolubbezpośredniodziedziczyinną).
Przeciążanieniewykluczaprzedeniowania:jeślinp.wklasieAzdeniowanodwie
publicznemetodyztąsamąnazwą(cooznacza,żesąprzeciążone,bosygnatury
metoddeklarowanychwjednejklasiemusząsiężnić),towklasieBdziedziczącej
klasęAmożemyjednąznichdodatkowoprzeciążyć(czylipodaćwdeklaracjiinny
zestawparametów),adrugąprzedeniować(pozostawiającjejsygnaturębezzmian
idostarczającinnejdenicjikodumetody).WtymwzględzieJavażnisięodC++.
Terminufiprzesłanianie”używasięwJaviewtedy,gdywzasięgudeklaracjiidentykatora
zmiennej,metodylubklasy(ogólniej:typu)pojawiasięinnadeklaracjategoidentykatora
(widzieliśmyprzykładyprzesłanianiaidentykatorówpólprzezidentykatoryzmiennych
lokalnych).
Wprzeciwieństwiedoprzesłanianiaterminówfiprzedeniowanie”(metody)ifipokrycie”
(metodylubpola)używasięwsytuacjidziedziczenia.Czymżnisiępokryciemetodyod
jejprzedeniowania?Otóżdostarczeniewpodklasiedenicjimetodystatycznejotejsamej
sygnaturzeitymsamymlubkowariantnymtypiewynikucometodastatycznaznadklasy
nazywasiępokryciemmetody.
Pokrywanieniedotyczymetodniestatycznych,cowięcejjeśliwpodklasiedostarczy-
mydenicjęmetodystatycznejotejsamejsygnaturzecometodaniestatycznanadklasy,
towystąpibłądwkompilacji.
Rozróżnieniepokryciaiprzedeniowaniametodyzwiązanejestteżzpojęciempolimor-
zmu(zob.następnepunkty):metodyprzedeniowanesąwywoływanepolimorcznie,
pokryciezaśoznaczatylkozastąpieniewywołaniametodypokrytej.
2.9.Przedeniowanieaprzeciążanie,przesłanianieipokrywanie
59