Preglasitev vs preobremenitev
Metoda Preglasitev in Preobremenitev metode sta dva koncepta / tehnika / funkcija, ki ju najdemo v nekaterih programskih jezikih. Oba koncepta omogočata programerju, da nudi različne izvedbe za metode z istim imenom. Preglasitev metode omogoča programerju, da zagotovi alternativno izvedbo v podrazredu metodi, ki je že definirana znotraj njegovega super razreda. Preobremenitev metod omogoča programerju, da zagotovi različne izvedbe več metod z istim imenom (znotraj istega razreda).
Kaj je razveljavitev?
Kot smo že omenili, lahko razred v objektno usmerjenih programskih jezikih razširi super razred ali nadrejeni razred. Podrejeni razred ima lahko lastne metode ali pa ima lahko tudi lastne izvedbe metod, ki so že definirane v nadrejenem razredu (ali enem od njegovih nadrejenih razredov). Torej, ko se zgodi slednje, se imenuje metoda overriding. Z drugimi besedami, če podrejeni razred zagotovi izvedbo metode z enakim tipom podpisa in vrnitve kot metoda, ki je že definirana v enem od njenih nadrejenih razredov, naj bi bila ta metoda razveljavljena (nadomeščena) z izvedbo podrejenega razreda. Torej, če v razredu obstaja razveljavljena metoda, se bo moral izvajalni sistem odločiti, katera izvedba metode bo uporabljena. To težavo odpravimo tako, da si ogledamo natančno vrsto predmeta, ki se uporablja za priklic. Če se za priklic prepisane metode uporabi objekt nadrejenega razreda, se uporabi izvedba v nadrejenem razredu. Podobno, če se uporablja objekt podrejenega razreda, se uporabi izvedba podrejenega razreda. Sodobni programski jeziki, kot so Java, Eifell, C ++ in Python, omogočajo preglasitev metod.
Kaj je preobremenitev?
Preobremenitev metode je funkcija, ki jo nekateri programski jeziki omogočajo za ustvarjanje več kot ene metode z istim imenom, vendar z različnimi vhodnimi in izhodnimi vrstami. V sodobnih programskih jezikih, kot so Java, C #, C ++ in VB. NET, je ta funkcija na voljo. Metodo lahko preobremenite z ustvarjanjem druge metode z istim imenom, vendar z drugačnim podpisom metode ali drugačnim tipom vrnitve (ali obojim). Če imate na primer v istem razredu method1 (type1 t1) in method1 (type2 t2), sta preobremenjeni. Nato se bo moral sistem odločiti, katerega izvesti, ko bo poklican. To razlikovanje se opravi s pregledom vrste parametrov, ki so bili posredovani metodi. Če je argument tipa1, se pokliče prva izvedba, medtem ko je vrsta2, potem se pokliče druga izvedba.
Kakšna je razlika med preglasitvijo in preobremenitvijo?
Čeprav se preglasitev metode in preobremenitev metode uporabljata za zagotavljanje metode z različnimi izvedbami, obstajajo ključne razlike med tema dvema konceptoma / tehnikama. Prvič, predmeti prevladajoče metode ostanejo vedno v različnih razredih, predmeti preobremenitve metode pa ostanejo v istem razredu. To pomeni, da je preglasitev možna samo v objektno usmerjenih programskih jezikih, ki omogočajo dedovanje, medtem ko je preobremenitev na voljo tudi v nepredmetno usmerjenem jeziku. Z drugimi besedami, preglasite metodo v super razredu, vendar preobremenite metodo znotraj svojega razreda.
Druga razlika je v tem, da imajo prepisane metode isto ime metode, podpis metode in vrsto vrnitve, vendar se morajo preobremenjene metode razlikovati bodisi v podpisu bodisi v vrsti vrnitve (ime mora biti enako). Za razlikovanje med dvema prepisanima metodama se uporablja natančen tip predmeta, ki se uporablja za priklic uporabljenih metod, medtem ko se za razlikovanje med dvema preobremenjenima metodama uporabljajo tipi parametrov. Druga ključna razlika je v tem, da se preobremenitev reši v času prevajanja, medtem ko se preglasitev reši med izvajanjem.