- Mantojuma raksturojums
- Hierarhija
- Polimorfisms
- Mantojuma veidi
- Unikāls mantojums
- Daudzlīmeņu mantojums
- Hierarhiskā mantošana
- Hibrīda mantojums
- Vairāku mantojumu
- Mantojuma veidi no pamatklases
- Sabiedrības mantojums
- Aizsargāta mantošana
- Privātā mantošana
- Piemēri
- Python piemērs
- Piemērs C ++
- Atsauces
In objektu mantojums - programmēšana ir veids, kā organizēt objektu hierarhijā no vispārējā uz konkrēto. Tas ir sīkrīks, kuru izmanto klases paplašināšanai citā klasē, saglabājot analoģisku izpildi.
Lielākajā daļā klases orientētu uz objektu orientētu valodu objekts, kas izveidots mantošanas ceļā un ko sauc par bērnu objektu, iegūst visas vecāku objekta īpašības un izturēšanos.
Vienkāršs mantojuma pierādījums objekta orientācijā. Avots: Pluke / CC0 Creative Commons CC0 1.0 Universal Public Domain
Tāpēc tā ir kvalitāte, kas attēlo attiecības starp dažādām klasēm. Mantojums ļauj klasei būt tādai pašai uzvedībai kā citai klasei un paplašināt vai pielāgot šo izturēšanos, lai nodrošinātu īpašu darbību īpašām vajadzībām.
Mantojums var palīdzēt attēlot objektus, kuriem ir dažas atšķirības un dažas līdzības to darbībā. Jūs varat salikt pamatklasē visas funkcijas, kas objektiem ir kopīgas, un pēc tam definēt vienu vai vairākas apakšklases ar savu pielāgoto funkcionalitāti.
Mantojuma raksturojums
Mantojums ir viens no objektorientētās programmēšanas galvenajiem raksturlielumiem, ko izmanto, lai no esošajām klasēm definētu jaunu klasi.
Tas ir, jaunas klases var iegūt no esošajām bāzes klasēm, pievienojot jaunas funkcijas. Jums nav jāraksta no nulles. Tādēļ mantojums nodrošina veidu, kā viegli izmantot esošo kodu atkārtoti.
Ja jums jau ir klase, kas dara gandrīz visu, ko vēlaties, varat izveidot apakšklasi, kurā daļēji tiek ignorēta tās uzvedība vai, iespējams, pievienota kāda jauna funkcionalitāte.
Atvasināta klase manto visas pamatklases metodes, izņemot šādas:
- Pamatklases konstruktori, destruktori un kopētāji.
- Operatori, kuri ir pārslogoti no bāzes klases.
- Pamatklases draudzīgas funkcijas.
Hierarhija
Kā to dara cilts koks, mantojums kalpo, lai veidotu klašu hierarhiju. Ir svarīgi atzīmēt, ka pamatklasei noteiktie atribūti automātiski atradīsies atvasinātajā klasē. Pamatklases metodes derēs arī atvasinājumiem.
Klase tiek uzskatīta par apakšklasi tai klasei, no kuras tā manto. No otras puses, šī klase būs jūsu superklases. Par vispārīgāko klasi var saukt par bāzes klasi, jo tā ir hierarhijas pamatā.
Polimorfisms
Mantojums ir ļoti populārs dažās valodās ar statiskiem tipiem, jo tas ļauj programmētājam izvairīties no dažiem statiskā tipa ierobežojumiem.
Objekts, kas mantots no cita objekta, tiek uzskatīts par šī objekta apakštipu. Kā piemēru var minēt objektus "instruktors" un "students", kurus katrs manto no "personas".
Ja instruktors un students ir viena un tā paša cilvēka tips, varat uzrakstīt funkciju, kas pieņem personas tipu kā parametru un kas darbojas uz instruktora un studenta objektiem, jo abi ir personas mantinieki.
Mantojuma veidi
Unikāls mantojums
Kad atvasināta klase manto vienas bāzes klases īpašības un izturēšanos. Tas ir, viena klase attiecas tikai uz vienu citu klasi.
Daudzlīmeņu mantojums
Attiecas uz sīkrīku, kurā jūs varat mantot no atvasinātas klases, padarot šo atvasināto klasi par bāzes klasi jaunai klasei. Tas ir, tas rodas, kad atvasināta klase tiek izveidota no citas atvasinātas klases.
Hierarhiskā mantošana
Šajā mantojumā daudzas apakšklases manto no vienas klases. Tas ir, tas notiek, ja vienu bāzes klasi manto vairāk nekā viena atvasināta klase.
Hibrīda mantojums
Tas ir iegūtais mantojums, kad tiek apvienots kāds no trim iepriekšējiem mantojumiem (viens, hierarhisks un daudzlīmeņu).
Vairāku mantojumu
Tas atbilst mantojuma skaitlim, kad klase manto no vairāk nekā vienas superklases. Šāda veida mantojuma trūkums ir tāds, ka atvasinātajai klasei būs jārisina atkarība no divām pamatklasēm.
No otras puses, šāda veida mantojums ļauj programmētājiem veidot klases, kas apvieno vairāku klašu aspektus un to atbilstošās hierarhijas.
Mantojuma veidi no pamatklases
Sabiedrības mantojums
Kad šķira tiek atvasināta no publiskas bāzes klases, bāzes klases sabiedriskie locekļi kļūst par atvasinātās šķiras publiskajiem locekļiem un bāzes klases aizsargātie dalībnieki kļūst par atvasinātās klases aizsargātajiem dalībniekiem.
Superklases privātajiem dalībniekiem nekad nebūs piekļuves tieši no atvasinātās klases, bet tiem var piekļūt, izmantojot zvanus sabiedrībai un aizsargātajiem bāzes klases dalībniekiem.
Aizsargāta mantošana
Kad tiek izveidota klase, kas mantota no aizsargātas superklases, gan šīs superklases publiskie, gan aizsargātie dalībnieki kļūs par atvasinātās klases aizsargātajiem dalībniekiem.
Privātā mantošana
Kad apakšklase tiek izveidota no privātas superklases, šīs pārklases publiskie un aizsargātie dalībnieki kļūs par apakšklases privātajiem dalībniekiem.
Piemēri
Python piemērs
Lai parādītu, kā darbojas mantojuma princips, mēs paņemsim robotus vai labāku robotu klasi Python programmēšanas valodā. Lai to izdarītu, tiks norādīta klase ar nosaukumu RobotMédico (PhysicianRobot), kas atvasināta no Robot superklases.
Apskatot RobotMédico klases kodu, varat redzēt, ka šajā klasē nav definēts neviens atribūts vai metode.
Tā kā RobotMedico klase ir robota apakšklase, šajā gadījumā tā pārmanto gan __init__, gan say_hi metodes. Šo metožu pārmantošana nozīmē, ka tās var izmantot tā, it kā tās būtu definētas RobotMédico klasē.
Kad tiek izveidots RobotMedico piemērs, funkcija __init__ izveidos arī nosaukuma atribūtu. Metodi say_hi var izmantot RobotMédico objektam “y”, kā redzams iepriekšējā koda rezultātā.
Piemērs C ++
Klase var mantot no vairāk nekā vienas klases, kas nozīmē, ka tā var mantot datus un funkcijas no vairākām superklasēm. Lai definētu atvasinātu klasi, jūs izmantojat klases atvasinājumu sarakstu, lai norādītu bāzes klases.
Klases atvasināšanas sarakstā C ++ tiek nosaukta viena vai vairākas pamatklases, un tai ir šāda forma: klase atvasināta klase: piekļuves specifikatora bāzes klase, kur piekļuves specifikators ir publisks, aizsargāts vai privāts, un bāzes klase ir iepriekš noteiktas klases nosaukums. Ja piekļuves specifikatoru neizmanto, pēc noklusējuma tiek izmantots privāts.
Superklases "Forma" un no tā izrietošās klases "Taisnstūris" var uzskatīt par sekojošu:
Kad iepriekš minētais kods tiek apkopots un izpildīts, notiek šāda izvade: "Kopējais laukums: 35".
Atsauces
- Deivs Braunšveigs (2020). Mantojums un polimorfisms. Rebus kopiena. Paņemts no: press.rebus.community.
- Python Course (2020). Mantojums. Paņemts no: python-course.eu.
- Datu mentors (2020). R Mantojums. Paņemts no: datamentor.io.
- Pamācību punkts (2020). C ++ mantojums. Paņemts no: tutorialspoint.com.
- Tīkla informācija (2020). Dažādi mantojuma veidi. Iegūts no: net-informations.com.