Treść książki
Przejdź do opcji czytnikaPrzejdź do nawigacjiPrzejdź do informacjiPrzejdź do stopki
publicStringgetPublisher(){
returnpublisher;
}
publicintgetYear(){
returnyear;
}
publicStringgetIdent(){
returnident;
}
publicdoublegetPrice(){
returnprice;
}
publicvoidsetPrice(doublep){
price=p;
}
publicintgetQuantity(){
returnquantity;
}
publicvoidbuy(intn){
quantity+=n;
}
publicvoidsell(intn){
quantity-=n;
}
}
Zauważmy,żezapomocątejklasyniemożemywpełniopisaćksiążek.Książkisąszcze-
gólną,fiwyspecjalizowaną”wersjąpublikacji,booprócztytułu,wydawcy,cenyitd.mają
jeszczejednąwłaściwość–autora(lubautorów).
Gdybyśmywprogramiechcieliopisywaćzakupisprzedażksiążek,topowinniśmyutwo-
rzyćnowąklasęopisującąksiążki,np.onazwieBook.Moglibyśmytorobićodpodstaw
(definiującwklasieBookpolaauthor,title,ident,priceiwszystkiemetodyoperu-
jącenanich,jakrównieżmetodysprzedażyikupowania).Alepoco?Przecieżklasa
Publicationdostarczajużwiększościpotrzebnychnampólimetod.Odziedziczymyją
zatemwklasieBookidodamytylkotenowewłaściwości(polaimetody),którychniema
wklasiePublication,aktórepowinnycharakteryzowaćksiążki.
Słowokluczoweextendssłużydowyrażeniarelacjidziedziczeniajednejklasyprzez
drugą.Piszemy:
classBextendsA{
iii
}
cooznacza,żeklasaBdziedziczy(rozszerza)klasęA.
44
2.Ponownewykorzystanieklas