- Mga katangian ng mana
- Hierarkiya
- Polymorphism
- Mga uri ng mana
- Natatanging mana
- Pamana ng maraming antas
- Pamana ng hierarkika
- Pamana ng Hybrid
- Maramihang mana
- Mga uri ng mana mula sa isang klase ng base
- Pamana ng publiko
- Protektadong mana
- Pribadong mana
- Mga halimbawa
- Halimbawa ng Python
- Halimbawa sa C ++
- Mga Sanggunian
Ang pamana sa program na may oriental na object ay isang paraan upang ayusin ang mga bagay sa isang hierarchy mula sa pangkalahatan hanggang sa tiyak. Ito ang gadget na ginamit upang mapalawak ang isang klase sa isa pang klase, na pinapanatili ang isang pagkakatulad na pagpatay.
Sa karamihan ng mga wika na nakabatay sa object-oriented na wika, ang isang bagay na nilikha sa pamamagitan ng mana, na tinatawag na isang bata na bata, ay nakakakuha ng lahat ng mga katangian at pag-uugali ng bagay ng magulang.
Simpleng patunay ng pamana sa orientation ng object. Pinagmulan: Pluke / CC0 Creative Commons CC0 1.0 Universal Public Domain
Samakatuwid, ito ay isang kalidad na kumakatawan sa relasyon sa pagitan ng iba't ibang klase. Ang pagiging mana ay nagbibigay-daan sa isang klase na magkaroon ng parehong pag-uugali tulad ng isa pang klase at upang pahabain o iangkop ang pag-uugali na iyon upang magbigay ng isang espesyal na pagkilos para sa mga tiyak na pangangailangan.
Ang mana ay maaaring makatulong na kumatawan sa mga bagay na may ilang pagkakaiba-iba at ilang pagkakapareho sa paraang gumagana. Maaari mong ilagay ang lahat ng pag-andar na pangkaraniwan ng mga bagay sa isang klase ng base, at pagkatapos ay tukuyin ang isa o higit pang mga subclass gamit ang iyong sariling pasadyang pag-andar.
Mga katangian ng mana
Ang pagkamamana ay isa sa mga pangunahing katangian ng programming-oriented na programa, na ginamit upang tukuyin ang isang bagong klase mula sa umiiral na mga klase.
Iyon ay, ang mga bagong klase ay maaaring makuha mula sa mga umiiral na mga klase ng base, pagdaragdag ng mga bagong tampok. Hindi mo na kailangang magsulat mula sa simula. Samakatuwid, ang mana ay nagbibigay ng isang paraan upang madaling magamit muli ang umiiral na code.
Kung mayroon ka nang isang klase na ginagawa ang halos lahat ng nais mo, maaari kang lumikha ng isang subclass kung saan ang ilan sa pag-uugali nito ay bahagyang naibabalutan, o marahil ang ilang bagong pag-andar ay idinagdag.
Ang isang nagmula na klase ay nagmamana ng lahat ng mga pamamaraan ng klase ng base, maliban sa mga sumusunod:
- Mga konstruktor, mga mapanirang-puri at mga tagabuo ng kopya ng batayang klase.
- Ang mga operator ay na-overload mula sa klase ng base.
- Mga pag-andar ng base sa klase.
Hierarkiya
Tulad ng ginagawa ng isang puno ng pamilya, ang mana ay nagsisilbing isang hierarchy ng mga klase. Mahalagang tandaan na ang mga katangian na tinukoy para sa isang klase ng base ay awtomatikong naroroon sa nagmula na klase. Gayundin, ang mga pamamaraan para sa klase ng base ay gagana para sa mga derivatives.
Ang isang klase ay sinasabing isang subclass ng klase na nagmula sa. Sa kabilang banda, ang klase na ito ang magiging superclass mo. Ang pinaka-pangkaraniwang klase ay maaaring tinukoy bilang ang klase ng base, dahil ito ay sa base ng hierarchy.
Polymorphism
Ang pusisyon ay napakapopular sa ilang mga wika na may mga static na uri, sapagkat pinapayagan nito ang programista na maiwasan ang ilan sa mga paghihigpit ng uri ng static.
Ang isang bagay na nagmula sa ibang bagay ay itinuturing na isang subtype ng bagay na iyon. Ang isang halimbawa ay maaaring ang mga bagay na "tagapagturo" at "mag-aaral", na ang bawat isa ay nagmula sa "tao".
Kung ang magtuturo at mag-aaral ay pareho ng uri ng tao, maaari kang sumulat ng isang function na tumatanggap ng uri ng tao bilang isang parameter at gumagana sa mga bagay na tagapagturo at mag-aaral, dahil kapwa ang mga tagapagmana ng tao.
Mga uri ng mana
Natatanging mana
Kapag ang isang nagmula na klase ay nagmamana ng mga katangian at pag-uugali ng isang solong klase ng base. Iyon ay, ang isang klase ay umaabot sa isa pang klase.
Pamana ng maraming antas
Tumutukoy sa gadget kung saan maaari kang magmana mula sa isang nagmula na klase, na ginagawang uri ng klase na ito ang batayang klase para sa isang bagong klase. Ibig sabihin, nagreresulta ito kapag ang isang nagmula na klase ay nilikha mula sa ibang nagmula na klase.
Pamana ng hierarkika
Sa pamana na ito, maraming mga subclass ang nagmana mula sa isang klase. Iyon ay, nangyayari ito kapag ang isang solong klase ng base ay minana ng higit sa isang nagmula sa klase.
Pamana ng Hybrid
Ito ang nagresultang mana kung ang alinman sa tatlong naunang mana ay pinagsama (solong, hierarchical at multilevel).
Maramihang mana
Ito ay tumutugma sa figure ng mana kung ang isang klase ay nagmamana mula sa higit sa isang superclass. Ang disbentaha sa ganitong uri ng mana ay ang hinanging klase ay kailangang hawakan ang dependency na mayroon ito sa dalawang mga klase ng base.
Sa kabilang banda, pinapayagan ng ganitong uri ng mana ang mga programmer na magtayo ng mga klase na pagsamahin ang mga aspeto ng maraming mga klase at ang kanilang kaukulang mga hierarchies.
Mga uri ng mana mula sa isang klase ng base
Pamana ng publiko
Kung ang isang klase ay nagmula sa isang klase ng pampublikong base, ang mga pampublikong miyembro ng base na klase ay naging mga pampublikong kasapi ng nagmula na klase at ang mga protektadong miyembro ng baseng klase ay maging protektado na mga miyembro ng nagmula sa klase.
Ang mga pribadong miyembro ng isang superclass ay hindi mai-access nang direkta mula sa isang nagmula na klase, ngunit mai-access sa pamamagitan ng mga tawag sa publiko at protektado na mga miyembro ng base class.
Protektadong mana
Kapag ang isang klase ay nilikha na nagmamana mula sa isang protektadong superclass, kapwa ang pampubliko at protektado na mga miyembro ng superclass na ito ay magiging protektado na mga miyembro ng nagmula sa klase.
Pribadong mana
Kapag ang isang subclass ay nilikha mula sa isang pribadong superclass, ang publiko at protektado na mga miyembro ng superclass na ito ay magiging mga pribadong miyembro ng subclass.
Mga halimbawa
Halimbawa ng Python
Upang ipakita kung paano gumagana ang prinsipyo ng mana, kukuha kami ng mga robot o isang mas mahusay na klase ng mga robot sa wika ng programming Python. Upang gawin ito, ang isang klase na tinawag na RobotMédico (PhysicianRobot) ay tinukoy, na nagmula sa Robot superclass.
Kung titingnan mo ang code ng klase ng RobotMédico, maaari mong makita na walang katangian o pamamaraan na natukoy sa klase na ito.
Yamang ang klase ng RobotMedico ay isang subclass ng Robot, nagmamana ito ng parehong __init__ at say_hi na mga pamamaraan sa kasong ito. Ang paghihiwalay ng mga pamamaraang ito ay nangangahulugang maaari silang magamit bilang kung sila ay tinukoy sa klase ng RobotMédico.
Kapag ang isang halimbawa ng RobotMedico ay nilikha, ang __init__ function ay lilikha din ng isang katangian ng pangalan. Ang pamamaraan ng say_hi ay maaaring mailapat sa bagay na "y" ng RobotMédico, tulad ng makikita sa resulta ng nakaraang code.
Halimbawa sa C ++
Ang isang klase ay maaaring magmana mula sa higit sa isang klase, na nangangahulugang maaari itong magmana ng data at pag-andar mula sa maraming superclasses. Upang tukuyin ang isang nagmula na klase, gumagamit ka ng isang listahan ng derivation ng klase upang tukuyin ang mga klase ng base.
Ang isang listahan ng derivation ng klase sa C ++ ay pinangalanan ang isa o higit pang mga klase ng base at may sumusunod na form: klase na nagmula-klase: access-specifier base-class, kung saan ang pag-access-specifier ay pampubliko, protektado, o pribado, at base-klase ay ang pangalan ng isang naunang tinukoy na klase. Kung ang access-specifier ay hindi ginagamit, pribado ay kinukuha bilang default.
Ang superclass na "Hugis" at ang nagmula sa klase na "Rectangle" ay maaaring isaalang-alang bilang mga sumusunod:
Kapag ang code sa itaas ay naipon at isinasagawa, ang sumusunod na output ay nangyayari: "Kabuuan ng lugar: 35".
Mga Sanggunian
- Dave Braunschweig (2020). Pagmamana at Polymorphism. Komunidad ng Rebus. Kinuha mula sa: pindutin.rebus.community.
- Kurso ng Python (2020). Pamana. Kinuha mula sa: python-course.eu.
- Data Mentor (2020). R Pamana. Kinuha mula sa: datamentor.io.
- Tutorials Point (2020). Pamana ng C ++. Kinuha mula sa: tutorialspoint.com.
- Mga impormasyong net (2020). Iba't ibang Mga Uri ng Pamana. Kinuha mula sa: net-informations.com.