Prevlado nad preobremenitvijo
Metoda Prekoračitev in metoda Preobremenitev sta dva koncepta / tehnike / značilnosti, ki jih najdemo v nekaterih programskih jezikih. Oba koncepta programerju omogočata različne izvedbe za metode z istim imenom. Prevladovanje metode omogoča programerju alternativno izvedbo znotraj podsklada metodi, ki je že določena znotraj njenega super razreda. Preobremenitev metode omogoča programerju različna izvajanja za več metod z istim imenom (znotraj istega razreda).
Kaj je prevladujoče?
Kot že omenjeno, lahko razred razširi super razred ali nadrejeni razred v objektno usmerjenih programskih jezikih. Otroški razred lahko ima svoje metode ali po izbiri lahko ima tudi lastne izvedbe metod, ki so že opredeljene v njegovem nadrejenem razredu (ali enem od njegovih nadrejenih razredov). Ko se to zgodi, se imenuje metoda prevladovanja. Z drugimi besedami, če nadrejeni razred izvaja izvedbo metode z enakim tipom podpisa in vrnitve kot metoda, ki je že določena v enem od njegovih nadrejenih razredov, se ta metoda nadomešča (nadomesti) z izvajanjem nadrejenega razreda . Torej, če je v razredu prevladala metoda, se mora sistem izvajanja odločiti, katera metoda se uporablja. To težavo rešite tako, da pogledate točno vrsto predmeta, ki se uporablja za priklic. Če se objekt nadrejenega razreda uporablja za priklic prepisane metode, se uporabi izvedba v nadrejenem razredu. Podobno je, če gre za predmet otroškega razreda, ki se uporablja, potem se uporablja izvedba otroškega razreda. Sodobni programski jeziki, kot so Java, Eifell, C ++ in Python, omogočajo prevladovanje metod.
Kaj je preobremenjenost?
Preobremenitev metod je funkcija nekaterih programskih jezikov za ustvarjanje več metod 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 tako, da ustvarite drugo metodo z istim imenom, vendar z drugačnim podpisom metode ali z drugo vrsto vrnitve (ali obojega). Na primer, če imate method1 (type1 t1) in method1 (type2 t2) znotraj istega razreda, so ti preobremenjeni. Nato se bo moral sistem odločiti, katero bo izvedel, ko bo poklican. Ta diferenciacija se izvede s pogledom na vrsto parametrov, ki so bili posredovani metodi. Če je argument tipa1, se pokliče prva izvedba, medtem ko je, če je tipa2, druga izvedba..
Kakšna je razlika med preglasitvijo in preobremenitvijo?
Čeprav se za zagotovitev metode z različnimi izvedbami uporabljata preglasitev metod in preobremenitev metod, obstajajo ključne razlike med tema dvema konceptoma / tehnikama. Najprej subjekti prevladovanja metod vedno ostanejo v različnih razredih, medtem ko subjekti preobremenitve metode ostanejo znotraj istega razreda. To pomeni, da je preglasitev možna le v objektno usmerjenih programskih jezikih, ki omogoča dedovanje, medtem ko je preobremenitev lahko na voljo tudi v neobjektno 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 vrsta vrnitve, vendar se morajo preobremenjene metode razlikovati bodisi v podpisu bodisi v vrnitveni obliki (ime mora biti enako). Za razlikovanje med dvema prepisanima metodama se uporabi natančen tip predmeta, ki se uporablja za priklic uporabljenih metod id, medtem ko za razlikovanje med dvema preobremenjenima načinoma uporabljamo vrste parametrov. Druga ključna razlika je, da se preobremenitev odpravi v času prevajanja, medtem ko je preglasitev odpravljena med izvajanjem.