Suprascriere vs supraîncărcare
Metoda Overriding și Method Overloading sunt două concepte / tehnici / caracteristici găsite în unele limbaje de programare. Ambele concepte permit programatorului să ofere implementări diferite pentru metode cu același nume. Anularea metodei permite programatorului să ofere o implementare alternativă într-o subclasă la o metodă deja definită în superclasa sa. Supraîncărcarea metodelor permite programatorului să furnizeze implementări diferite mai multor metode cu același nume (în cadrul aceleiași clase).
Ce este suprascrierea?
Așa cum s-a menționat mai sus, o clasă poate extinde o clasă super sau o clasă părinte, în limbaje de programare orientate obiect. O clasă copil poate avea propriile sale metode sau, opțional, poate avea propriile implementări la metodele deja definite în clasa sa părinte (sau una dintre clasele sale părinte). Deci, atunci când se întâmplă aceasta din urmă, se numește metoda suprascriere. Cu alte cuvinte, dacă clasa copil oferă o implementare unei metode cu același tip de semnătură și returnare ca o metodă deja definită într-una din clasele sale părinte, se spune că metoda respectivă este înlocuită (înlocuită) de implementarea clasei copil. Deci, dacă există o metodă suprascrisă într-o clasă, sistemul de runtime va trebui să decidă ce metodă de implementare este utilizată. Această problemă este rezolvată examinând exact tipul de obiect care este folosit pentru a o invoca. Dacă un obiect al clasei părinte este utilizat pentru a invoca metoda suprascrisă, atunci se utilizează implementarea în clasa părinte. În mod similar, dacă este un obiect al clasei copil care este utilizat, atunci se folosește implementarea clasei copil. Limbajele moderne de programare precum Java, Eifell, C ++ și Python permit suprascrierea metodelor.
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 de intrare și ieșire diferite. În limbaje 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 altă semnătură de metodă sau un alt tip de returnare (sau ambele). De exemplu, dacă aveți metoda1 (tip1 t1) și metoda1 (tip2 t2) în aceeași clasă, atunci acestea sunt supraîncărcate. Apoi, sistemul va trebui să decidă care va fi executat atunci când este apelat. Această diferențiere se face examinând tipul parametrilor care au fost transferați metodei. Dacă argumentul este de tip 1, atunci se numește prima implementare, în timp ce dacă este de tip 2, atunci se numește a doua implementare.
Care este diferența dintre suprascriere și suprasarcină?
Deși, suprascrierea metodei și supraîncărcarea metodelor sunt utilizate pentru a furniza o metodă cu implementări diferite, există diferențe cheie între aceste două concepte / tehnici. Mai întâi de toate, subiectele de metoda suprascriere rămân întotdeauna în clase diferite, în timp ce subiectele de supraîncărcare a metodei rămân în aceeași clasă. Asta înseamnă că suprascrierea este posibilă numai în limbajele de programare orientate pe obiecte care permit moștenirea, în timp ce supraîncărcarea poate fi disponibilă și într-un limbaj care nu este orientat obiect. Cu alte cuvinte, suprascrieți o metodă în clasa super, dar suprasolicitați o metodă în propria clasă.
O altă diferență este că metodele suprascrise au același nume de metodă, semnătura metodei și tipul returnat, dar metodele supraîncărcate trebuie să difere fie în semnătură, fie în tipul returnat (numele ar trebui să fie același). Pentru a face diferența între două metode suprascrise, tipul exact de obiect utilizat pentru a invoca metoda id utilizată, în timp ce pentru a diferenția între două metode supraîncărcate se utilizează tipurile de parametri. O altă diferență esențială este că supraîncărcarea este rezolvată la momentul compilării, în timp ce suprascrierea este rezolvată la runtime.