Supraîncărcarea metodei
Supraîncărcarea metodelor, cunoscută și sub denumirea de supraîncărcare a funcției sau polimorfism în timp de compilare, este un concept de a avea două sau mai multe metode cu același nume, dar semnătură diferită în același domeniu. Există multe limbaje de programare care acceptă această caracteristică: Ada, C++, C#, D și Java.
Exemplu de supraîncărcare a metodei în C#
După cum se arată în exemplul de mai sus, metoda „Poligon” este supraîncărcată de 3 ori cu semnătură de metodă diferită, adică tipul sau numărul de parametri sunt diferiti.
Suprascrierea metodei
Suprascrierea metodei, cunoscută și sub numele de Suprascrierea funcției sau polimorfismul timpului de rulare, este o caracteristică OOP care permite unei clase copil să ofere propria sa implementare metodei definite în clasa părinte. Implementarea în clasa copil suprascrie definiția metodei în clasa de bază, cu condiția ca metoda din clasa copil să aibă același nume, semnătură și tip de returnare.
Exemplu de înlocuire a metodei în C#
Aici, metoda draw din clasa Source2 suprascrie metoda draw definită în clasa Source1.
Diferența dintre supraîncărcarea metodei și suprascrierea metodei
- În Metoda, metodele de supraîncărcare trebuie să aibă o semnătură diferită. În metodă, metodele de suprascrie trebuie să aibă aceeași semnătură.
- Supraîncărcarea funcției este de a „adăuga” sau „extinde” mai mult la comportamentul metodei. Suprascrierea funcției este de a „schimba” sau „redefini” complet comportamentul unei metode.
- Supraîncărcarea metodei este utilizată pentru a realiza polimorfismul în timp de compilare; suprascrierea metodei este utilizată pentru a obține polimorfismul în timpul rulării.
- În supraîncărcarea metodei/funcției, compilatorul știe ce obiect i-a fost alocat cărei clase în momentul compilării, dar în cazul suprascrierii metodei, această informație nu este cunoscută până la runtime.
- Supraîncărcarea funcției are loc în aceeași clasă, în timp ce suprasolicitarea are loc într-o clasă derivată dintr-o clasă de bază.
Diferențele înrudite