- Paveldėjimo savybės
- Hierarchija
- Polimorfizmas
- Paveldėjimo rūšys
- Unikalus palikimas
- Daugiapakopis palikimas
- Hierarchinis palikimas
- Hibridinis palikimas
- Daugybinis palikimas
- Paveldėjimo iš bazinės klasės tipai
- Visuomenės palikimas
- Saugomas palikimas
- Privatus palikimas
- Pavyzdžiai
- Python pavyzdys
- C ++ pavyzdys
- Nuorodos
Objektiniu palikimas - orientuotas programavimas yra būdas organizuoti objektų hierarchijos nuo bendro prie konkretus. Tai įtaisas, naudojamas išplėsti klasę į kitą klasę, išsaugant analogišką vykdymą.
Daugelyje klasių į objektą orientuotų kalbų paveldėjimo būdu sukurtas objektas, vadinamas antriniu objektu, įgyja visas pirminio objekto savybes ir elgseną.
Paprastas paveldėjimo įrodymas orientuojantis į objektą. Šaltinis: „Pluke“ / CC0 „Creative Commons CC0 1.0“
Todėl tai yra kokybė, apibūdinanti skirtingų klasių santykius. Paveldėjimas leidžia klasei elgtis taip pat, kaip ir kitai klasei, ir pratęsti ar pritaikyti tą elgesį, kad būtų galima atlikti specialų veiksmą atsižvelgiant į konkrečius poreikius.
Paveldimumas gali padėti vaizduoti objektus, kurių veikimas turi tam tikrų skirtumų ir panašumų. Galite sudėti visas funkcijas, kurias turi bendri objektai, į pagrindinę klasę, o tada apibrėžti vieną ar daugiau poklasių naudodami savo pasirinktinę funkciją.
Paveldėjimo savybės
Paveldimumas yra viena pagrindinių objektinio programavimo savybių, naudojama apibrėžti naują klasę iš esamų klasių.
Tai yra, naujas klases galima išvesti iš esamų bazinių klasių, pridedant naujų funkcijų. Nereikia rašyti nuo nulio. Todėl paveldėjimas suteikia galimybę lengvai pakartotinai naudoti esamą kodą.
Jei jau turite klasę, kuriai darote beveik viską, ko norite, galite sukurti poklasį, kuriame jo elgesys būtų iš dalies pakeistas arba galbūt pridėta naujų funkcijų.
Išvestinė klasė paveldi visus bazinės klasės metodus, išskyrus šiuos:
- Bazinės klasės konstruktoriai, destruktoriai ir kopijuotojai.
- Operatoriai, perkrauti iš pagrindinės klasės.
- Pagrindinės klasės draugiškos funkcijos.
Hierarchija
Kaip šeimos medis, paveldimumas sudaro klasių hierarchiją. Svarbu pažymėti, kad pagrindinei klasei nustatyti požymiai automatiškai bus pateikiami išvestinėje klasėje. Taip pat bazinės klasės metodai bus naudojami išvestinėms priemonėms.
Sakoma, kad klasė yra klasės, kurią ji paveldėjo, poklasis. Kita vertus, ši klasė bus tavo superklasė. Pačia bendriausia klase galima vadinti bazinę klasę, nes ji yra hierarchijos pagrindas.
Polimorfizmas
Paveldėjimas yra labai populiarus kai kuriose kalbose su statiniais tipais, nes tai leidžia programuotojui išvengti kai kurių statinio tipo apribojimų.
Objektas, paveldimas iš kito objekto, laikomas to objekto potipiu. Pavyzdys galėtų būti objektai „instruktorius“ ir „studentas“, kurių kiekvienas paveldimas iš „asmens“.
Jei instruktorius ir studentas yra to paties asmens tipo, galite parašyti funkciją, kuri priima asmens tipą kaip parametrą ir kuri veikia instruktoriaus bei studento objektuose, nes abu yra asmens įpėdiniai.
Paveldėjimo rūšys
Unikalus palikimas
Kai išvestinė klasė paveldi vienos pagrindinės klasės savybes ir elgesį. Tai yra, viena klasė apima tik vieną kitą klasę.
Daugiapakopis palikimas
Tai įtaisas, kurį galite paveldėti iš išvestinės klasės, todėl ši išvestinė klasė taps pagrindine naujos klasės klase. Tai yra, tai atsiranda, kai iš kitos išvestinės klasės sukuriama išvestinė klasė.
Hierarchinis palikimas
Šiuo palikimu daugelis poklasių paveldi iš vienos klasės. Tai yra, atsitinka, kai vieną pagrindinę klasę paveldi daugiau nei viena išvestinė klasė.
Hibridinis palikimas
Tai yra paveldėjimas, kai bet kuris iš trijų ankstesnių palikimų yra derinamas (vienas, hierarchinis ir daugiapakopis).
Daugybinis palikimas
Tai atitinka paveldėjimo skaičių, kai klasė paveldi iš daugiau nei vienos superklasės. Šio paveldėjimo tipo trūkumas yra tas, kad išvestinė klasė turės valdyti priklausomybę nuo dviejų bazinių klasių.
Kita vertus, šis paveldėjimo tipas leidžia programuotojams kurti klases, jungiančias kelių klasių aspektus ir jų atitinkamas hierarchijas.
Paveldėjimo iš bazinės klasės tipai
Visuomenės palikimas
Kai klasė išvedama iš viešos bazinės klasės, viešieji bazinės klasės nariai tampa išvestinės klasės viešaisiais nariais, o saugomi bazinės klasės nariai tampa saugomais išvestinės klasės nariais.
Privatūs superklasės nariai niekada nebus pasiekiami tiesiogiai iš išvestinės klasės, bet prie jų bus galima prisijungti paskambinus visuomenei ir saugomiems bazinės klasės nariams.
Saugomas palikimas
Kai sukuriama klasė, paveldinti iš saugomos superklasės, tiek viešieji, tiek saugomi šios superklasės nariai taps išvestinės klasės saugomais nariais.
Privatus palikimas
Sukūrus poklasį iš privačios superklasės, viešieji ir saugomi šio poklasio nariai taps privačiais poklasio nariais.
Pavyzdžiai
Python pavyzdys
Norėdami parodyti, kaip veikia paveldėjimo principas, paimsime robotus ar geresnės klasės robotus „Python“ programavimo kalba. Tam tikslui bus nurodyta klasė, vadinama „RobotMédico“ („PhysicianRobot“), kuri gaunama iš „Robot“ superklasės.
Pažvelgę į „RobotMédico“ klasės kodą, pamatysite, kad šioje klasėje nebuvo apibrėžtas atributas ar metodas.
Kadangi „RobotMedico“ klasė yra roboto poklasis, ji šiuo atveju paveldi ir __init__, ir say_hi metodus. Paveldėti šie metodai reiškia, kad jie gali būti naudojami taip, tarsi jie būtų apibrėžti „RobotMédico“ klasėje.
Kai sukuriamas „RobotMedico“ egzempliorius, funkcija __init__ taip pat sukurs pavadinimo atributą. „Say_hi“ metodą galima pritaikyti „RobotMédico“ objektui „y“, kaip tai matyti ankstesnio kodo rezultate.
C ++ pavyzdys
Klasė gali paveldėti iš daugiau nei vienos klasės, tai reiškia, kad ji gali paveldėti duomenis ir funkcijas iš kelių superklasių. Norėdami apibrėžti išvestinę klasę, naudokite klasės išvestinių sąrašą, norėdami nurodyti pagrindines klases.
C ++ klasių išvestinių sąrašas įvardija vieną ar daugiau bazinių klasių ir yra tokios formos: klasės išvestinė klasė: prieigos specifikatoriaus bazinė klasė, kai prieigos specifikatorius yra viešas, saugomas arba privatus, o bazinė klasė yra anksčiau apibrėžtos klasės pavadinimas. Jei prieigos specifikatorius nenaudojamas, pagal nutylėjimą jis laikomas privačiu.
Aukščiausios klasės „Forma“ ir iš jos išvestinė klasė „Stačiakampis“ gali būti laikomi taip:
Sudarant ir vykdant aukščiau pateiktą kodą, išvedama tokia išvada: „Bendras plotas: 35“.
Nuorodos
- Dave'as Braunschweigas (2020). Paveldimumas ir polimorfizmas. „Rebus“ bendruomenė. Paimta iš: press.rebus.community.
- Python trasa (2020). Paveldimumas. Paimta iš: python-course.eu.
- Duomenų mentorius (2020). R Paveldimumas. Paimta iš: datamentor.io.
- Mokymo taškas (2020). C ++ paveldimumas. Paimta iš: tutorialspoint.com.
- Grynoji informacija (2020 m.). Skirtingi paveldėjimo tipai. Paimta iš: net-informations.com.