Avantajele și dezavantajele metodei de supraîncărcare în Java

Metodele supraîncărcate sunt metode din aceeași clasă care au același nume, dar acceptă diferite tipuri de variabile ca argumente. De exemplu, o clasă poate conține două metode diferite de „adăugare”: una care acceptă două valori duble, „adăugați (double a, dublu b)” și una care acceptă două valori întregi, „adăugați (int a, int b).” Computerul decide automat ce metodă să apeleze în timpul execuției, în funcție de tipurile de variabile transmise metodă.

Flexibilitate

Metodele supraîncărcate oferă programatorilor flexibilitatea de a apela o metodă similară pentru diferite tipuri de date. Dacă lucrați la un program de matematică, de exemplu, puteți utiliza supraîncărcarea pentru a crea mai multe clase de „multiplicare”, fiecare dintre ele înmulțește un număr diferit de tip de argument: cel mai simplu „înmulțire (int a, int b)” înmulțește două numere întregi; metoda mai complicată „înmulțire (dublu a, int b, int c)” înmulțește un dublu cu două numere întregi -- ați putea apoi apelați „multiplicați” pentru orice combinație de variabile pentru care ați creat o metodă supraîncărcată și primiți rezultatul potrivit.

Videoclipul zilei

Constructorii

Supraîncărcarea este, de asemenea, utilizată pe constructori pentru a crea obiecte noi având în vedere cantități diferite de date. De exemplu, puteți utiliza supraîncărcarea pentru a crea trei constructori diferiți pentru un obiect „Casa” cu un număr de casă, numele străzii și variabile de culoare. Cel mai simplu constructor „House()” nu ia argumente și creează o casă cu variabile implicite sau goale. Un constructor mai complex, „House (int houseNumber, String streetName)” creează o casă cu numărul și numele străzii specificate, dar o culoare implicită sau goală. Cel mai complex constructor, „House (int houseNumber, String streetName, String color)” creează o casă cu toate informațiile specificate, fără a lăsa nimic implicit. Apoi, puteți crea un obiect de casă pe baza informațiilor disponibile în prezent, cu informațiile indisponibile lăsate necompletate sau implicite.

Referințe ambigue

Metodele supraîncărcate trebuie să utilizeze numere sau tipuri diferite de argumente pentru a evita ambiguitatea. Dacă creați două metode în aceeași clasă care au același nume și acceptă două numere întregi ca argumente, Compilatorul Java nu va putea face distincția între cele două, chiar dacă variabilele de intrare au nume diferite. De exemplu, metoda „add (int a, int b)” nu poate exista în aceeași clasă cu metoda „add (int c, int d).”

Tipuri de returnare

Trebuie să definiți un tip de returnare pentru fiecare metodă supraîncărcată. Metodele pot avea diferite tipuri de returnare -- de exemplu, „add (int a, int b)” poate returna un număr întreg, în timp ce „add (double a, double b)” returnează un dublu. Cu toate acestea, Java nu poate face distincția între două metode diferite pe baza tipului lor de returnare. Prin urmare, „int multiplicare (double a, double b)” nu poate exista în aceeași clasă cu „double multiplicare (double a, double b).”