- i-polymorphism ivumela izinto ukuthi ziphendule ngendlela ehlukile ngendlela efanayo, kuye ngesigaba sazo.
- Kunezinhlobo ezimbili eziyinhloko: i-polymorphism yesikhathi sokuhlanganisa kanye ne-run-time polymorphism.
- Ukuqaliswa kwayo kuyahlukahluka phakathi kwezilimi ezifana ne-Java, i-Python ne-C#, ngayinye inezindlela eziwusizo zokuthuthukiswa kwemodular nokuguquguqukayo.
- Ihlinzeka ngezinzuzo ezifana nokusetshenziswa kabusha kwekhodi, ukuguquguquka, kanye nokucaca ekwakhiweni, nakuba ingase yethule izinselele zokusebenza nokuba yinkimbinkimbi.
I-Polymorphism ingumqondo oyinhloko ohlelweni oluqondiswe ezintweni ongase ubonakale uyinkimbinkimbi ekuqaleni, kodwa uma usuqondakala, uba ithuluzi elinamandla kakhulu. Leli gama, elisuselwa emagameni esiGreki athi "poly" (amaningi) kanye nelithi "morph" (amafomu), libhekisela ekhonweni lento lokwamukela izinhlobo eziningi noma ukuziphatha ezimweni ezahlukene.
Lesi sihloko sihlola ngokujulile ukuthi iyini i-polymorphism, izinhlobo ezikhona, nokuthi ithinta kanjani izilimi ezifana ne-Java, i-Python, ne-C#. Sizohlaziya nezinzuzo zayo , izinselele , kanye nobudlelwano nezinye izinsika ze-OOP njengefa kanye ne -encapsulation. Ngaphandle kokuchitha isikhathi, ake sihlolisise lesi sihloko esithakazelisayo.
Iyini i-polymorphism ezinhlelweni ezigxile ezintweni?
I-Polymorphism kuhlelo oluqondiswe ezintweni ivumela indlela efanayo, impahla, noma ikilasi ukuthi lisebenze ngezindlela ezahlukene kuye ngomongo. Kalula nje, yikhono lezinto zezigaba ezahlukene ukuphendula umyalezo noma isicelo esifanayo. Lokhu kusho ukuthi indlela efanayo ingaziphatha ngendlela ehlukile uma isetshenziswa ezintweni ezahlukene.
Isibonelo, ohlelweni olubonisa izilwane, ungase ube nesigaba esiyisisekelo esibizwa ngokuthi "Isilwane" ( izibonelo zaso kungaba izinto eziqondile) ngendlela ebizwa ngokuthi "makeSound()". Amakilasi atholakalayo njenge-"Dog" kanye ne-"Cat" angadlula le ndlela ukuze akhiphe imisindo ethile efana nokubhonga noma ukuxokozela. Lokhu kuziphatha okuguquguqukayo nokuvumelana nezimo yilokho esikubiza ngokuthi i-polymorphism.
Izinhlobo ze-polymorphism
I-Polymorphism ingahlukaniswa ngezinhlobo ezimbili eziyinhloko:
- I-polymorphism yesikhathi sokuhlanganisa (i-static): Kwenzeka lapho umhlanganisi enquma ukuthi iyiphi indlela okufanele ayisebenzise ngokusekelwe kumapharamitha adlulisiwe. Lokhu kufinyelelwa ngokusebenzisa indlela yokulayisha ngokweqile, lapho izindlela eziningi zabelana ngegama elifanayo kodwa zinamasiginesha ahlukene (inombolo nohlobo lwama-agumenti).
- I-polymorphism yesikhathi sokusebenza (i-dynamic): Kulokhu, isinqumo sokuthi iyiphi indlela okufanele sisetshenziswe senziwa ngesikhathi sokwenziwa kohlelo. Lokhu kufezwa ngezindlela zokweqa. Iwusizo ikakhulukazi ekuthungeni ukuziphatha okusekelwe ohlotsheni lwento yangempela etholiwe.
Ukusebenzisa i-polymorphism ezilimini zokuhlela
I-Polymorphism yenziwa ngezindlela ezahlukene ezilimini ezihlukene zokuhlela. Ake sibone ukuthi kusebenza kanjani kwezinye zazo:
Java
I-Java, njengolimi oluthayiphiwe ngokuqinile futhi oluqondiswe entweni, inikeza izindlela ezimbalwa zokusebenzisa i-polymorphism:
- Indlela yokulayisha ngokweqile: Isibonelo sakudala se-polymorphism emile. Ikuvumela ukuthi uchaze izindlela eziningi ezinegama elifanayo ekilasini, kodwa ngamasiginesha ahlukene.
- Indlela iyakhipha: Isibonelo se-polymorphism eguquguqukayo. Amakilasi asuselwe angahlinzeka ngokusetshenziswa kwawo kwendlela yekilasi lesisekelo.
Isibonelo esijwayelekile ku-Java kungaba ikilasi elithi "Imoto" enendlela ethi "hambisa()" ekhishwe amakilasi afana nokuthi "Imoto" kanye "Nebhayisikili" ukuze imodeli yokunyakaza okuthile.
Python
Ku -Python eqondiswe ezintweni , ngenxa yokuthayipha kwayo okuguquguqukayo, i-polymorphism ayixhomekile kuphela kwifa. Lesi sici saziwa ngokuthi "ukuthayipha kwedada": uma nje into inezindlela okulindeleke ukuthi ibizwe ngazo, ingabhekwa njengesebenzayo ngaphandle kwesidingo sokwabelana ngesibonisi esisemthethweni njengaku-Java.
Isibonelo, ungaba namakilasi ahlukene njengokuthi "Inja" kanye "Nekati" angabelani ngefa, kodwa womabili asebenzisa indlela ethi "speak()". Uma ibizwa, into ngayinye izokwenza inguqulo yayo yendlela, ivumela i-polymorphism ngaphandle kwezakhiwo eziqinile.
C#
Ku-C#, i-polymorphism ifinyelelwa ngokuyinhloko ngokusebenzisa izindlela ezibonakalayo namakilasi angabonakali:
- Izindlela ezibonakalayo: Avumela amakilasi atholiwe ukuthi abhale ngaphezulu indlela echazwe kusigaba sesisekelo kusetshenziswa igama elingukhiye elithi "bhala ngaphezulu".
- Amakilasi angabonakali: Banikeza isixhumi esibonakalayo esiyisisekelo okufanele amakilasi atholiwe asebenze, ngaleyo ndlela azuze i-polymorphism enamandla.
Izinzuzo ze-polymorphism
I-Polymorphism ayigcini nje ngokwenza kube lula ukuguquguquka kwekhodi, kodwa futhi inikeza izinzuzo eziningi ezisebenzayo:
- Ukusetshenziswa kabusha kwekhodi: Ikuvumela ukuthi ubhale izindlela ezijwayelekile ezingasebenza ngezinto zezinhlobo ezahlukene.
- Ukunakekela okwehlisiwe: Ikhodi yemojuli eyengeziwe nenwebekayo isho umzamo omncane wokuvuselela nokukala.
- Ukuvumelana nezimo: Amasistimu e-Polymorphic angakwazi ukuzivumelanisa kalula nezidingo ezintsha ngaphandle kwesidingo sokuhlela kabusha ikhodi ekhona.
- Ukucaca: Ukusebenzisa amakilasi ayisisekelo kanye nezindlela ezivamile kunciphisa inkimbinkimbi yekhodi, okwenza iqondakale kakhudlwana.
Izinselelo ze-polymorphism
Naphezu kwezinzuzo zayo eziningi, i-polymorphism nayo iveza izinselelo ezithile:
- Umthelela ekusebenzeni: Ezimeni ze-polymorphism enamandla, ukulungiswa kwesikhathi sokusebenza kungabambezela uhlelo.
- Ubunkimbinkimbi: Ukuqaliswa okuthuthukile kungaba nzima ukukuqonda konjiniyela abasafufusa.
Ubudlelwano phakathi kwe-polymorphism, ifa kanye ne-encapsulation
I-Polymorphism ayisebenzi yodwa. Ukusebenza kwayo kuyanda lapho kuhlanganiswa nezinye izimiso ze-OOP:
- Ifa: Isiza ukusetshenziswa kabusha kwekhodi ngokuvumela amakilasi atholiwe ukuthi asebenzise izindlela nezakhiwo zamakilasi ayisisekelo.
- i-encapsulation: Ngokufihla imininingwane yangaphakathi futhi udalule kuphela okudingekayo, udala indawo lapho i-polymorphism ingasebenza ngokucacile nangokuphephile.
Ukuqonda nokusebenzisa le nqubo akuthuthukisi kuphela amakhono okubhala amakhodi, kodwa futhi kuvula iminyango yokuthuthukiswa kwesofthiwe esebenza ngempumelelo futhi esimeme.