Diferența dintre supraîncărcare și suprascriere | Supraîncărcare vs suprascriere
Publicat: 2021-06-15Cuprins
Introducere
Programarea orientată pe obiecte joacă un rol important în sectoarele de dezvoltare software. Mai multe concepte sunt asociate cu acest tip de programare, cum ar fi clasa, obiectul, polimorfismul, moștenirea, abstracția datelor, programarea generică și manipularea excepțională.
Dezvoltatorii consideră întotdeauna că conceptul de polimorfism este destul de interesant, care are subconcepte precum supraîncărcarea metodei, suprascrierea metodei etc. Cu toate acestea, pentru a înțelege mai bine conceptul de polimorfism, diferența dintre supraîncărcare și suprascriere trebuie înțeleasă.
Diferența dintre supraîncărcarea metodei și suprascrierea metodei
Există o mulțime de diferențe între supraîncărcarea metodei și suprascrierea metodei . Lista diferențelor dintre supraîncărcarea metodei și suprascrierea în java este tabelată mai jos:
Supraîncărcarea metodei | Suprascrierea metodei | |
1 | Metoda este utilizată pentru creșterea lizibilității programului. | Metoda este folosită pentru a furniza implementarea metodei furnizate de superclasă. |
2 | Se realizează în cadrul unei clase | Apare în două clase având relație IS-A (moștenire). Pentru anulare sunt necesare o clasă de bază și o clasă de copil. |
3 | Metodele sau funcțiile trebuie să aibă același nume și semnături diferite. | Metodele sau funcțiile trebuie să aibă același nume și aceleași semnături. |
4 | Parametrii utilizați în această metodă ar trebui să fie diferiți. | Aceiași parametri ar trebui utilizați în cazul depășirii metodei. |
5 | Este un exemplu de polimorfism în timp de compilare. Legarea apelului metodei de supraîncărcare la definiția sa are loc în timpul compilării. | Este un exemplu de polimorfism de rulare. Legarea apelului de metodă suprascris la definiția sa are loc în timpul rulării. |
6 | Numai prin schimbarea tipului de returnare, supraîncărcarea metodei nu poate fi efectuată. Tipul de returnare poate fi diferit sau același. Dar, parametrii ar trebui să fie diferiți. | Tipul de returnare în suprascrierea metodei poate fi același sau covariant. |
7 | Supraîncărcarea metodelor poate fi aplicată metodelor statice. Aceasta înseamnă că o clasă poate avea mai multe metode statice cu același nume. | Suprascrierea metodei nu poate fi aplicată metodelor statice. |
8 | Legarea statică este utilizată pentru supraîncărcarea metodei. | Legarea dinamică este utilizată pentru înlocuirea metodei. |
9 | O performanță mai bună este dată de supraîncărcarea metodei. | Performanță mai mică în comparație cu supraîncărcarea metodei. Motivul este că legarea metodelor suprascrise se face în timpul execuției. |
10 | Metodele private și finale pot fi supraîncărcate. O clasă poate avea mai multe metode private/finale cu același nume. | Metodele private și finale nu pot fi înlocuite. O clasă copil nu poate suprascrie metodele private/finale ale clasei lor de bază. |
11 | Moștenirea poate fi necesară sau nu în cazul supraîncărcării metodei. | Moștenirea este întotdeauna necesară în cazul depășirii metodei. |
12 | Este folosit pentru a adăuga mai mult la comportamentul metodelor. | Este folosit pentru a schimba comportamentul metodelor existente. |
13 | Nu este nevoie de prezența a mai mult de o clasă în supraîncărcarea metodei. | Există întotdeauna nevoie de cel puțin două clase în anularea metodei. |
14 | Dacă supraîncărcarea se întrerupe, va veni eroarea de compilare și este ușor de remediat. | Dacă suprascrieți întreruperi, poate cauza probleme serioase în programul nostru, deoarece efectul va fi vizibil în timpul execuției. |
15 | Supraîncărcarea metodei trebuie să aibă o semnătură diferită. | Suprascrierea metodei trebuie să aibă aceeași semnătură. |
16 | Modificatorii de acces în metoda de supraîncărcare pot fi orice sau diferiți. | Modificatorul de acces al metodei subclasei trebuie să fie același sau mai mare decât modificatorul de acces al metodei superclasei din metoda de suprascriere. |
17 | Excepțiile aruncate pot fi orice în conceptul de supraîncărcare a metodei. | În anularea metodei, excepțiile neverificate aruncate pot fi orice. Pentru excepțiile verificate, metoda de suprascriere nu ar trebui să arunce excepții care sunt noi sau mai largi decât cele declarate de metoda suprascrise. |
18 | Compilatorul are întotdeauna grijă de rezoluția metodei pe baza tipului de referință. | JVM se ocupă de rezoluția metodei bazată pe obiectul runtime. |
Învață cursuri de software online de la cele mai bune universități din lume. Câștigă programe Executive PG, programe avansate de certificat sau programe de master pentru a-ți accelera cariera.
Ce urmează?
Dacă sunteți interesat să aflați mai multe despre dezvoltarea de software full-stack, consultați programul Executive PG de la upGrad și IIIT-B în dezvoltarea de software Full-Stack, care este conceput pentru profesioniști care lucrează și oferă peste 500 de ore de formare riguroasă, peste 9 proiecte și misiuni, statutul de absolvenți IIIT-B, proiecte practice practice și asistență pentru locuri de muncă cu firme de top.
Ce este polimorfismul runtime?
Polimorfismul runtime este un fel de polimorfism care implică tastare dinamică. Aceasta înseamnă că obiectele pot fi manipulate ca și cum ar fi un singur tip. Acest lucru este similar cu polimorfismul static în care obiectele sunt manipulate ca și cum ar avea un singur tip, indiferent de tipul lor subiacent. Este unul dintre cele cinci principii majore de proiectare a software-ului. Este folosit cu programarea orientată pe obiecte. Înseamnă că o variabilă se poate referi la diferite obiecte în funcție de condițiile de timp de rulare. De exemplu, o variabilă poate fi folosită pentru a se referi la un obiect Dog atunci când variabila este declarată, dar în timpul execuției programului, variabila se poate referi la un obiect Cat. Este o conversie automată de tip. De exemplu, dacă aveți o variabilă întreagă i și îi atribuiți o valoare șir, aceasta va deveni o variabilă șir.
Cât de diferită este suprascrierea de supraîncărcare?
Putem suprascrie metoda supraîncărcată?
O metodă supraîncărcată este aceeași cu una obișnuită (din punct de vedere al numărului și tipului parametrilor), dar cu diferența că metoda supraîncărcată este scrisă în așa fel încât să poată accepta parametri de alt tip decât cea obișnuită. Puteți suprascrie o metodă supraîncărcată în același mod în care o înlocuiți pe una obișnuită.