Diferența dintre suprascriere și supraîncărcare

Diferența dintre suprascriere și supraîncărcare
Diferența dintre suprascriere și supraîncărcare

Video: Diferența dintre suprascriere și supraîncărcare

Video: Diferența dintre suprascriere și supraîncărcare
Video: Difference between consumption/ consumer goods and capital goods (class 12 macroeconomics) 2024, Iulie
Anonim

Anulare vs supraîncărcare

Metoda Overriding și metoda Overloading sunt două concepte/tehnici/funcție găsite în unele limbaje de programare. Ambele concepte permit programatorului să ofere implementări diferite pentru metode cu același nume. Suprascrierea metodei permite programatorului să ofere o implementare alternativă în cadrul unei subclase la o metodă deja definită în cadrul superclasei sale. Supraîncărcarea metodei permite programatorului să ofere implementări diferite pentru mai multe metode cu același nume (în cadrul aceleiași clase).

Ce este anulare?

După cum sa menționat mai sus, o clasă poate extinde o super clasă sau o clasă părinte, în limbaje de programare orientate pe obiecte. O clasă copil poate avea propriile sale metode sau poate avea, opțional, propriile sale implementări la metodele deja definite în clasa sa părinte (sau una dintre clasele sale părinte mare). Deci, atunci când se întâmplă aceasta din urmă, se numește suprascriere metodei. Cu alte cuvinte, dacă clasa copil oferă o implementare unei metode cu aceeași semnătură și tip de returnare ca o metodă deja definită într-una dintre clasele sale părinte, se spune că acea metodă este suprascrisă (înlocuită) de implementarea clasei copil.. Deci, dacă există o metodă suprascrisă într-o clasă, sistemul de rulare va trebui să decidă ce implementare a metodei este utilizată. Această problemă este rezolvată analizând tipul exact de obiect care este utilizat pentru a-l invoca. Dacă un obiect al clasei părinte este folosit pentru a invoca metoda suprascrisă, atunci se folosește implementarea în clasa părinte. În mod similar, dacă este un obiect al clasei copil care este utilizat, atunci implementarea clasei copil este utilizată. Limbajele de programare moderne precum Java, Eifell, C++ și Python permit înlocuirea metodei.

Ce este supraîncărcarea?

Supraîncărcarea metodelor este o caracteristică oferită de unele limbaje de programare pentru a crea mai multe metode cu același nume, dar cu tipuri diferite de intrare și ieșire. În limbajele de programare moderne precum Java, C, C++ și VB. NET, această caracteristică este disponibilă. Puteți supraîncărca o metodă prin crearea unei alte metode cu același nume, dar cu o semnătură de metodă diferită sau un tip de returnare diferit (sau ambele). De exemplu, dacă aveți method1(type1 t1) și method1(type2 t2) în cadrul aceleiași clase, atunci acestea sunt supraîncărcate. Apoi sistemul va trebui să decidă care să fie executat atunci când este apelat. Această diferențiere se face analizând tipul parametrului (parametrilor) transmis în metodă. Dacă argumentul este de tipul 1, atunci prima implementare este apelată, în timp ce dacă este de tipul 2, atunci este apelată a doua implementare.

Care este diferența dintre suprascriere și supraîncărcare?

Deși, suprascrierea metodei și supraîncărcarea metodei sunt folosite pentru a oferi o metodă cu implementări diferite, există diferențe cheie între aceste două concepte/tehnici. În primul rând, subiecții de supraîncărcare a metodei rămân întotdeauna în cadrul unor clase diferite, în timp ce subiecții de supraîncărcare a metodei rămân în aceeași clasă. Aceasta înseamnă că suprascrierea este posibilă numai în limbaje de programare orientate pe obiecte care permit moștenirea, în timp ce supraîncărcarea poate fi disponibilă și într-un limbaj neorientat pe obiecte. Cu alte cuvinte, suprascrieți o metodă din super clasă, dar supraîncărcați o metodă din propria clasă.

O altă diferență este că metodele suprascrise au același nume de metodă, semnătură de metodă și tip de returnare, dar metodele supraîncărcate trebuie să difere fie în semnătură, fie în tipul returnării (numele ar trebui să fie același). Pentru a diferenția între două metode suprascrise, tipul exact de obiect care este utilizat pentru a invoca id-ul metodelor utilizate, în timp ce pentru a diferenția între două metode supraîncărcate sunt utilizate tipurile de parametri. O altă diferență cheie este că supraîncărcarea este rezolvată în timpul compilării, în timp ce suprascrierea este rezolvată în timpul execuției.

Recomandat: