Ülekandmine vs ülekoormus
Meetod Üldamine ja Meetodi ülekoormamine on kaks mõistet / tehnikat / funktsiooni, mida leidub mõnes programmeerimiskeeles. Mõlemad mõisted võimaldavad programmeerijal pakkuda samanimeliste meetodite jaoks erinevaid rakendusi. Meetodi alistamine võimaldab programmeerijal pakkuda alamklassis alternatiivset teostust meetodile, mis on juba määratletud tema superklassis. Meetodi ülekoormamine võimaldab programmeerijal pakkuda sama nimega (sama klassi piires) mitmele meetodile erinevaid rakendusi..
Mis on ülimuslik?
Nagu eespool mainitud, võib klass laiendada superklassi või vanemklassi objektorienteeritud programmeerimiskeeltes. Lasteklassil võivad olla oma meetodid või soovi korral ka oma rakendused meetoditele, mis on juba määratletud tema vanemklassis (või ühes tema vanemateklassidest). Nii et kui viimane juhtub, nimetatakse seda meetodiks ülimuslikuks. Teisisõnu, kui lasteklass pakub rakenduse meetodile, millel on sama allkiri ja tagastamise tüüp kui meetodil, mis on juba määratletud ühes tema vanemklassidest, siis väidetakse, et see meetod on lasteklassi rakendamisel ümber pandud (asendatud) . Niisiis, kui klassis on ülepakutud meetod, peab käitamissüsteem otsustama, millist meetodi rakendamist kasutatakse. See probleem lahendatakse, kui vaadata selle objekti käivitamiseks kasutatavat täpset tüüpi objekti. Kui ületatud meetodi esilekutsumiseks kasutatakse vanemklassi objekti, kasutatakse vanemklassi teostust. Samamoodi, kui kasutatakse lasteklassi objekti, kasutatakse lasteklassi teostust. Kaasaegsed programmeerimiskeeled, nagu Java, Eifell, C ++ ja Python, võimaldavad meetodi ületamist.
Mis on ülekoormamine?
Meetodi ülekoormamine on funktsioon, mida pakuvad mõned programmeerimiskeeled, et luua mitu sama nimega, kuid erineva sisend- ja väljunditüübiga meetodit. Kaasaegsetes programmeerimiskeeltes, nagu Java, C #, C ++ ja VB.NET, on see funktsioon saadaval. Meetodi ülekoormamiseks saate luua sama nimega, kuid erineva meetodi allkirjaga või erineva tagastamise tüübi (või mõlemaga) meetodi. Näiteks kui teil on sama klassi sees meetod1 (tüüp1 t1) ja meetod1 (tüüp2 t2), siis on nad ülekoormatud. Siis peab süsteem otsustama, milline neist käivitatakse, kui seda kutsutakse. Selle eristamise aluseks on meetodile edastatud parameetri (te) tüübi vaatamine. Kui argument on tüüp 1, kutsutakse esimene teostus, kui aga tüüp 2, siis teine teostus.
Mis vahe on ülekirjutamisel ja ülekoormamisel??
Ehkki erineva teostusega meetodi saamiseks kasutatakse meetodi ületamist ja meetodi ülekoormamist, on nende kahe mõiste / tehnika vahel peamised erinevused. Esiteks, meetodi ülekaalu õppeained jäävad alati erinevatesse klassidesse, samas kui meetodit üle koormavad õppeained jäävad samasse klassi. See tähendab, et alistamine on võimalik ainult objektorienteeritud programmeerimiskeeltes, mis võimaldavad pärimist, samas kui ülekoormamine võib olla saadaval ka muul kui objektorienteeritud keeles. Teisisõnu, sa alistad superklassis meetodi, kuid koormad üle oma klassis leiduva meetodi.
Teine erinevus on see, et ülepakutud meetoditel on sama meetodi nimi, meetodi allkiri ja tagastamise tüüp, kuid ülekoormatud meetoditel peavad erinevad nii allkiri kui ka tagastamise tüüp (nimi peaks olema sama). Kahe ülepakutud meetodi eristamiseks kasutatakse objektide täpset tüüpi, mida kasutatakse kasutatud meetodite käivitamiseks, samas kui kahe ülekoormatud meetodi eristamiseks kasutatakse parameetrite tüüpe. Teine oluline erinevus on see, et ülekoormamine lahendatakse kompileerimise ajal, samal ajal kui ületamine lahendatakse runtime.