Treść książki

Przejdź do opcji czytnikaPrzejdź do nawigacjiPrzejdź do informacjiPrzejdź do stopki
Możemypowiedzieć,żeobiektyklasyBooksąrównieżobiektamiklasyPublication
(wtymsensie,żemająwszelkiewłaściwościobiektówklasyPublication).
2.2.Konwersjereferencyjne
ReferencjedoobiektówklasyBookmożemyprzypisywaćzmiennym,oznaczającym
obiektyklasyPublication(zawierającymreferencjedoobiektówklasyPublication),
np.:
Bookb=newBook(iii);
Publicationp=b;
Nazywasiętoreferencyjnąkonwersjąrozszerzającą(wideningreferenceconversion).
Słowofikonwersja”oznacza,żedochodzidoprzekształceniazjednegotypunainnytyp
(np.ztypuBookdonatypPublication).Konwersjajestrozszerzająca,boprzekształ-
camytypfipochodny”(referencjadoobiektupodklasy)natypfiwyższy”(referencjado
obiektunadklasy).Aponieważchodziotypyreferencyjne,mówimyoreferencyjnejkon-
wersjirozszerzającej.
Obiektowekonwersjerozszerzającedokonywanesąautomatycznieprzy:
przypisywaniuzmiennej–referencjiodniesieniadoobiektuklasypochodnej;
przekazywaniuargumentówmetodzie,gdyparametrmetodyjesttypufireferencja
doobiektunadklasyargumentu”;
zwrociewyniku,gdywynikpodstawiamynazmiennąbędącąreferencjądoobiektu
nadklasyzwracanegowyniku.
TazdolnośćobiektówJavydofistawaniasięobiektemswojejnadklasyjestniesłychanie
użyteczna.
Wyobraźmysobie,żezklasyPublicationopróczklasyBookwprowadziliśmyjeszcze
klasęJournal(czasopisma).KlasaJournaldziedziczyklasęPublicationidodajedo
niejzamiastpola,opisującegoautorapolaopisującewolumininumerwydaniadanego
czasopisma.
Byćmożebędziemymielijeszczeinnerodzajepublikacji,np.muzyczne,wydanena
płytachCD(powiedzmyklasęCDiskznowudziedziczącąklasęPublicationidodającą
jakieśinformacjewłaściwedlamuzyki,np.czasodtwarzania).
Możemyteraznp.napisaćuniwersalnąmetodępokazującążnicęwdochodachze
sprzedażywszystkichzapasówdowolnychdwóchpublikacji.
publicdoubleincomeDiff(Publicationp1,Publicationp2){
doubleincome1=p1igetQuantity()*p1igetPrice();
doubleincome2=p2igetQuantity()*p2igetPrice();
returnincome1income2;
}
48
2.Ponownewykorzystanieklas