Povzetek razred vs dedovanje
Povzetek razreda in dedovanje sta dva pomembna objektno usmerjena koncepta, ki ju najdemo v mnogih objektno usmerjenih programskih jezikih, kot je Java. Abstraktni razred lahko obravnavamo kot abstraktno različico običajnega (konkretnega) razreda, medtem ko dedovanje omogoča nove razrede, da razširijo druge razrede. Abstraktni razred je razred, ki ga ni mogoče inicializirati, vendar ga je mogoče razširiti. Torej, abstraktne razrede je smiselno imeti le, če programski jezik podpira dedovanje. V Javi so razredi Abstract razglašeni z uporabo ključne besede Abstract, medtem ko je ključna beseda Extends uporabljena za dedovanje iz (super) razreda.
Kaj je abstraktni razred?
Običajno abstraktnih razredov, znanih tudi kot abstraktni osnovni razredi (ABC), ni mogoče izdelati v primerku (primerka tega razreda ni mogoče ustvariti). Torej, abstraktne razrede je smiselno imeti le, če programski jezik podpira dedovanje (zmožnost ustvarjanja podrazredov iz razširitve razreda). Abstraktni razredi običajno predstavljajo abstraktni koncept ali entiteto z delno izvedbo ali brez nje. Zato abstraktni razredi delujejo kot nadrejeni razredi, iz katerih izhajajo podrejeni razredi, tako da si bo podrejeni razred delil nepopolne lastnosti nadrejenega razreda, za dokončanje pa je mogoče dodati funkcionalnost.
Abstraktni razredi lahko vsebujejo abstraktne metode. Podrazredi, ki razširjajo abstraktni razred, lahko izvajajo te (podedovane) abstraktne metode. Če podrejeni razred izvaja vse take abstraktne metode, je to konkreten razred. Če pa ne, postane razred otrok tudi abstraktni. Vse to pomeni, da ko programerka nominira razred za Povzetek, pravi, da bo razred nepopoln in bo imel elemente, ki jih je treba dopolniti z podedovanimi podrazredi. To je lep način za sklenitev pogodbe med dvema programerjema, ki poenostavlja naloge pri razvoju programske opreme. Programerka, ki piše kodo za dedovanje, mora natančno slediti definicijam metode (seveda pa ima lahko lastno izvedbo).
Kaj je dedovanje?
Dedovanje je objektno usmerjen koncept, ki novim razredom omogoča razširitev drugih razredov. Ključna beseda extends se uporablja za izvajanje koncepta dedovanja v programskem jeziku Java. Dedovanje v bistvu zagotavlja ponovno uporabo kode, tako da omogoča razširitev lastnosti in vedenja obstoječega razreda na novo definiran razred. Ko nov podrazred (ali izpeljani razred) razširi super razred (ali nadrejeni razred), bo podrazred podedoval vse atribute in metode super razreda. Podrazred lahko po želji preglasi vedenje (metodam podeduje novo ali razširjeno funkcionalnost), podedovane od nadrejenega razreda. Podrazred običajno ne more razširiti več super razredov (npr. V Javi). Zato razširitev ne morete uporabljati za večkratno dedovanje. Če želite večkratno dedovanje, morate uporabiti vmesnike.
Kakšna je razlika med abstraktnim razredom in dedovanjem?
Abstraktni razredi običajno predstavljajo abstraktni koncept ali entiteto z delno izvedbo ali brez nje. Dedovanje omogoča novim razredom razširitev drugih razredov. Ker abstraktnih razredov ni mogoče ustvariti, morate za uporabo abstraktnih razredov uporabiti koncept dedovanja. V nasprotnem primeru abstraktni razred nima nobene koristi. Abstraktni razredi lahko vsebujejo abstraktne metode in ko je razred razširjen, se vse metode (abstraktne in konkretne) podedujejo. Podedovani razred lahko izvaja katero koli ali vse metode. Če niso uporabljene vse metode Abstract, potem ta razred postane tudi razred Abstract. Razred ne more podedovati več kot enega abstraktnega razreda (to ni lastnost abstraktnih razredov kot takega, temveč omejitev dedovanja).