Razlika med preglasitvijo in preobremenitvijo

Razlika med preglasitvijo in preobremenitvijo
Razlika med preglasitvijo in preobremenitvijo

Video: Razlika med preglasitvijo in preobremenitvijo

Video: Razlika med preglasitvijo in preobremenitvijo
Video: #Карника и #Бакфаст: в чем разница? Часть #1 2024, November
Anonim

Preglasitev proti preobremenitvi

Preglasitev metode in preobremenitev metode sta dva koncepta/tehniki/funkcije, ki ju najdemo v nekaterih programskih jezikih. Oba koncepta omogočata programerju, da zagotovi različne izvedbe za metode z istim imenom. Preglasitev metode omogoča programerju, da zagotovi alternativno izvedbo znotraj podrazreda za metodo, ki je že definirana znotraj njenega nadrazreda. Preobremenitev metod omogoča programerju, da zagotovi različne izvedbe za več metod z istim imenom (znotraj istega razreda).

Kaj je preglasitev?

Kot je omenjeno zgoraj, lahko razred razširi nadrazred ali nadrejeni razred v objektno usmerjenih programskih jezikih. Podrejeni razred ima lahko lastne metode ali pa ima po želji lastne izvedbe metod, ki so že definirane v njegovem nadrejenem razredu (ali enem od njegovih velikih nadrejenih razredov). Torej, ko se zgodi slednje, se to imenuje preglasitev metode. Z drugimi besedami, če podrejeni razred zagotavlja izvedbo metode z enakim podpisom in povratnim tipom kot metoda, ki je že definirana v enem od svojih nadrejenih razredov, naj bi bila ta metoda preglasena (zamenjena) z izvedbo podrejenega razreda.. Torej, če je v razredu preglasena metoda, se bo moral izvajalni sistem odločiti, katera implementacija metode bo uporabljena. To težavo odpravite tako, da pogledate točno vrsto predmeta, ki se uporablja za priklic. Če se za priklic preglasene metode uporabi objekt nadrejenega razreda, se uporabi implementacija v nadrejenem razredu. Podobno, če je uporabljen 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 metod je funkcija, ki jo ponujajo nekateri programski jeziki 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 tako, da ustvarite drugo metodo z enakim imenom, vendar z drugačnim podpisom metode ali drugačno vrnjeno vrsto (ali oboje). Na primer, če imate metodo1(tip1 t1) in metodo1(tip2 t2) znotraj istega razreda, sta preobremenjeni. Nato se bo sistem moral odločiti, katero naj izvede, ko bo poklican. To razlikovanje naredimo tako, da pogledamo vrsto parametrov, ki so bili posredovani metodi. Če je argument tipa1, se pokliče prva izvedba, če pa je tipa2, 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 implementacijami, obstajajo ključne razlike med tema konceptoma/tehnikama. Prvič, subjekti preglasitve metod vedno ostanejo znotraj različnih razredov, medtem ko subjekti preobremenitve metod ostanejo znotraj istega razreda. To pomeni, da je preglasitev možna samo v objektno usmerjenih programskih jezikih, ki omogočajo dedovanje, medtem ko je preobremenitev lahko na voljo tudi v neobjektno usmerjenem jeziku. Z drugimi besedami, preglasite metodo v super razredu, vendar preobremenite metodo v svojem razredu.

Druga razlika je v tem, da imajo preglasene metode isto ime metode, podpis metode in vrnjeni tip, preobremenjene metode pa se morajo razlikovati po podpisu ali vrnjenem tipu (ime mora biti enako). Za razlikovanje med dvema preglasenima metodama je natančen tip objekta, ki se uporablja za priklic uporabljenih metod, medtem ko se za razlikovanje med dvema preobremenjenima metodama uporabljajo vrste parametrov. Druga ključna razlika je, da se preobremenitev razreši v času prevajanja, preglasitev pa med izvajanjem.

Priporočena: