Izvleček razreda proti dedovanju
Abstraktni razred in Dediščina sta dva pomembna objektno usmerjena koncepta, ki ju najdemo v številnih objektno usmerjenih programskih jezikih, kot je Java. Abstraktni razred je mogoče obravnavati kot abstraktno različico običajnega (konkretnega) razreda, medtem ko dedovanje omogoča novim razredom razširitev drugih razredov. 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 se razredi Abstrakt razvrstijo s ključno besedo Abstract, medtem ko se za podedovanje iz (super) razreda uporablja ključna beseda Extends.
Kaj je abstraktni razred?
Običajno razredov Abstrakcije, znanih tudi kot Abstraktni osnovni razredi (ABC), ni mogoče instancirati (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 ponavadi predstavljajo abstraktni koncept ali entiteto z delnim izvajanjem ali brez njega. Zato abstraktni razredi delujejo kot nadrejeni razredi, iz katerih izhajajo otroški razredi, tako da bo nadrejeni razred delil nepopolne lastnosti nadrejenega razreda, za dokončanje pa jih je mogoče dodati funkcionalnosti.
Izvlečki lahko vsebujejo abstraktne metode. Podklasi, ki razširjajo abstraktni razred, lahko izvajajo te (podedovane) Abstraktne metode. Če otroški razred izvaja vse take abstraktne metode, je to konkreten razred. Če pa tega ne, postane tudi razred otroka abstraktni razred. Vse to pomeni, da ko programer nominira razred za izvleček, pravi, da bo razred nepopoln in da bo imel elemente, ki jih morajo izpolniti podedovalni podklasi. To je lep način za ustvarjanje pogodbe med dvema programerjema, ki poenostavlja naloge pri razvoju programske opreme. Programer, ki napiše kodo za dedovanje, mora natančno slediti definicijam metod (seveda pa ima lahko tudi lastno izvedbo).
Kaj je dedovanje?
Dedovanje je objektno orientiran koncept, ki omogoča novim razredom razširitev drugih razredov. Ključna beseda extends se uporablja za izvajanje koncepta dedovanja v programskem jeziku Java. Dedovanje v bistvu omogoča ponovno uporabo kode, tako da omogoča razširitev lastnosti in obnašanja 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 (zagotavlja nove ali razširjene funkcionalnosti metod), podedovane iz nadrejenega razreda. Podrazred običajno ne more razširiti več super razredov (npr. Na Javi). Zato razširitev ne morete uporabiti za večkratno dedovanje. Za večkratno dedovanje morate uporabiti vmesnike.
Kakšna je razlika med abstraktnim razredom in dedovanjem?
Abstraktni razredi ponavadi predstavljajo abstraktni koncept ali entiteto z delnim izvajanjem ali brez njega. Dedovanje omogoča novim razredom razširitev drugih razredov. Ker abstraktnih razredov ni mogoče instancirati, morate za uporabo abstraktnih razredov uporabiti koncept dedovanja. Sicer razred Abstrakt nima nobene koristi. Abstraktni razredi lahko vsebujejo abstraktne metode in ko se razred razširi, se podedujejo vse metode (abstraktne in konkretne). Podedovani razred lahko izvaja katere koli ali vse metode. Če vse metode Abstrakcije niso izvedene, potem ta razred postane tudi razred Izvleček. Razred ne more podedovati iz več abstraktnih razredov (ne gre za kakovost abstraktnih razredov kot take, temveč za omejitev dedovanja).