Suprasolicitarea metodelor, cunoscută și sub denumirea de supraîncărcare a funcțiilor sau polimorfismul timpului de compilare, este un concept de a avea două sau mai multe metode cu același nume, dar cu o altă semnătură diferită în același domeniu. Există multe limbi de programare care acceptă această caracteristică: Ada, C ++, C #, D și Java.
Exemplu de suprasolicitare a metodelor în C #
clasa OverloadShapes {float Poligon (raza int, float pi) {float circleArea = pi * raza * raza; } int Poligon (lungime int, lățime int) {int rectangleArea = lungime * lățime; } int Polygon (partea int) {int squareArea = lateral * lateral; }}1 2 3 4 5 6 7 8 9 10 11 12 13 14 | clasa OverloadShapes {float Poligon (raza int, float pi) {float circleArea = pi * raza * raza; } int Poligon (lungime int, lățime int) {int rectangleArea = lungime * lățime; } int Polygon (partea int) {int squareArea = lateral * lateral; }} |
Așa cum se arată în exemplul de mai sus, metoda "Polygon" este supraîncărcată de 3 ori cu semnătura metodei diferite, adică tipul sau numărul de parametri sunt diferiți.
Înlocuirea metodei
Suprascrierea metodei, cunoscută și sub denumirea de funcționalitate sau polimorfism de execuție a timpului, este o caracteristică OOP care permite unei clase de copil să furnizeze propria implementare metodei definite în clasa părinte. Implementarea în clasa copil suprascrie definiția metodei din clasa de bază, cu condiția ca metoda din clasa copil să aibă același nume, semnătura și tipul retur.
Exemplu de suprascriere a metodei în C #
class Source1 {public void draw () {Console.Writeline ("Sunt în clasa Source1"); }} Clasa Source2 extinde Source1 {public void draw () {Console.Writeline ("Sunt în clasa Source2"); }}1 2 3 4 5 6 7 8 9 10 | clasa Source1 {public void draw () {Consola. Writeline ("Sunt în clasa Source1"); }} Clasa Source2 extinde Source1 {public void draw () {Console. Writeline ("Sunt în clasa Source2"); }} |
Aici, metoda draw în clasa Source2 înlocuiește metoda de tragere definită în clasa Source1.
Diferența dintre suprasolicitarea metodelor și depășirea metodei
- În metodele de supraîncărcare Metoda trebuie să aibă o semnătură diferită. În metodă, metodele imperative trebuie să aibă aceeași semnătură.
- Supraîncărcarea funcției este de a "adăuga" sau de a "extinde" mai mult la comportamentul metodei. Suprascrierea funcției este de a "schimba" complet sau de a "redefini" comportamentul unei metode.
- Supraîncărcarea metodelor este utilizată pentru a realiza polimorfismul timpului compilării; suprascrierea metodei este utilizată pentru a realiza polimorfismul de execuție.
- În compilatorul de supraîncărcare a metodei / funcției știe ce obiect a fost atribuit clasei la momentul compilării, dar în metoda de suprascriere aceste informații nu sunt cunoscute până la execuție.
- Supraîncărcarea funcției are loc în aceeași clasă, în timp ce Suprascrierea are loc într-o clasă derivată dintr-o clasă de bază.