Santrauka Klasė vs paveldėjimas
Santrauka „Klasė“ir „Paveldimumas“yra dvi svarbios į objektą orientuotos sąvokos, randamos daugelyje objektų orientuotų programavimo kalbų, tokių kaip „Java“. Abstrakčią klasę galima laikyti abstrakčia taisyklingos (konkrečios) klasės versija, o paveldėjimas leidžia naujoms klasėms pratęsti kitas klases. Santrauka yra klasė, kurios negalima inicijuoti, tačiau ją galima pratęsti. Taigi, abstrakčios klasės yra prasmingos turėti tik tuo atveju, jei programavimo kalba palaiko paveldėjimą. „Java“sistemoje abstrakčios klasės yra deklaruojamos naudojant abstraktų raktinį žodį, o išplėstinis raktinis žodis naudojamas paveldint iš (super) klasės.
Kas yra abstrakti klasė?
Paprastai abstrakčių klasių, dar vadinamų abstrakčiomis bazinėmis klasėmis (ABC), negalima paruošti (negalima sukurti tos klasės egzemplioriaus). Taigi, abstrakčios klasės yra prasmingos turėti tik tuo atveju, jei programavimo kalba palaiko paveldėjimą (galimybę kurti poklasius pratęsiant klasę). Abstraktios klasės paprastai atspindi abstrakčią sąvoką ar esmę, iš dalies arba visai neįgyvendinant. Todėl santraukos klasės veikia kaip tėvų klasės, iš kurių gaunamos vaikų klasės, kad vaikų klasė pasidalintų nepilnomis tėvų klasės ypatybėmis, o funkcionalumas gali būti pridėtas, kad jas būtų galima užbaigti.
Santraukos klasėse gali būti abstrakčių metodų. Abstraktės klasės pratęsimo poklasiai gali įgyvendinti šiuos (paveldėtus) abstrakčius metodus. Jei vaikų klasė įgyvendina visus tokius abstrakčius metodus, tai yra konkreti klasė. Bet jei taip nėra, vaikų klasė taip pat tampa abstrakčia klase. Visa tai reiškia, kad kai programuotojas skiria klasę kaip santrauką, ji sako, kad klasė bus neišsami ir ji turės elementų, kuriuos reikia užpildyti paveldėtuose poklasiuose. Tai puikus būdas sukurti dviejų programuotojų sutartį, kuri supaprastina programinės įrangos kūrimo užduotis. Programuotojas, kuris rašo kodą paveldėti, turi tiksliai laikytis metodo apibrėžimų (bet, žinoma, gali turėti savo diegimą).
Kas yra paveldėjimas?
Paveldėjimas yra į objektą orientuota sąvoka, leidžianti naujoms klasėms išplėsti kitas klases. „Extends“raktinis žodis naudojamas paveldėjimo sampratai įgyvendinti Java programavimo kalboje. Paveldėjimas iš esmės suteikia pakartotinį kodo naudojimą, leidžiant išplėsti esamos klasės savybes ir elgesį naujai apibrėžta klase. Kai nauja poklasis (arba išvestinė klasė) pratęs super klasę (arba pirminę klasę), tai poklasis paveldės visus super klasės atributus ir metodus. Paklasis gali pasirinktinai nepaisyti elgesio (suteikti metodams naujos ar išplėstinės funkcijos), paveldėto iš tėvų klasės. Paprastai poklasis negali išplėsti kelių superklasių (pvz., „Java“). Todėl negalite naudoti pratęsimų daugkartiniam paveldėjimui. Norėdami gauti kelis paveldėjimo būdus, turite naudoti sąsajas.
Koks skirtumas tarp abstrakčios klasės ir paveldėjimo?
Abstraktios klasės paprastai atspindi abstrakčią koncepciją arba esmę, iš dalies arba be jokio įgyvendinimo. Paveldėjimas leidžia naujoms klasėms išplėsti kitas klases. Kadangi abstrakčių klasių negalima paruošti, turite naudoti paveldėjimo sąvoką, kad galėtumėte naudoti abstrakčias klases. Kitu atveju abstrakta klasė neturi jokios naudos. Abstrakčiose klasėse gali būti abstrakčių metodų, o pratęsus klasę, visi metodai (abstraktūs ir konkretūs) yra paveldimi. Paveldima klasė gali įgyvendinti bet kurį arba visus metodus. Jei visi santraukos metodai nėra įgyvendinami, ta klasė taip pat tampa abstrakčia klase. Klasė negali paveldėti iš daugiau nei vienos abstrakčios klasės (tai savaime nėra abstrakčių klasių kokybė, greičiau paveldėjimo apribojimas).