Metode de clasă la suprasarcină în Java, Java blog doar despre

Metode de clasă la suprasarcină în Java, Java blog doar despre
În articolul de astăzi se concentrează pe una dintre cele mai interesante mijloace de limbaj Java - metode de clasă de suprasarcină. Mai multe metode ale unei clase pot avea același nume, care diferă doar printr-un set de parametri.

Metoda Supraîncărcarea este o modalitate de punere în aplicare a principiului polimorfism în Java.

Pentru a supraîncărca metoda de a anunța o nouă versiune este suficientă, diferența-yuschiysya celor existente, si orice altceva va face compilator. Este necesar doar să respecte un tip condiție și / sau numărul de parametri în fiecare dintre metodele supraîncărcate trebuie să fie diferite.

diferențe simple în tipurile de valori de returnare pentru suficient în acest scop. (Pentru informații despre tipul de întoarcere nu este întotdeauna suficient de Java pentru a lua o decizie cu privire la care ar trebui să fie utilizată metoda.)

Desigur, metode ne-regruzhaemye pot avea diferite tipuri de returnare, dar atunci când metoda este realizată doar o singură variantă în care parametrii argumentele respective au trecut.

Aici este un exemplu simplu al unui program care demonstrează metoda supraîncărcării.

Din moment ce acest program are o versiune a metodei f (), care are de tip parametru de octet. apoi un apel f (byte), și conversia automată în tip int de tip octet nu se produce atunci când această metodă se numește, cu un argument de tip octet.

Metoda Supraîncărcarea susține polimorfism, deoarece este una dintre modalitățile de a pune în aplicare paradigma „o singură interfață. - un set de metode“ Pentru a face clar cum și de ce se face, este necesar să se ia în considerare următoarele considerente: în limbaje de programare, care nu acceptă suprasolicitarea de metode, fiecare metodă trebuie să aibă un nume unic.

Dar, în unele cazuri, aveți nevoie este îndeplinită, aceeași secvență de operații pe diferite tipuri de date. Ca un exemplu, ia în considerare o funcție care determină valoarea absolută a.

În limbile care nu acceptă metoda de suprasarcini, este necesar să se creeze mai multe variante ale acestei funcții, numele care diferă de cel puțin un simbol.

De exemplu, în C abs funcție de limbă () returnează valoarea absolută de tip int, laboratoare () funcție - valoarea absolută a tipului de lungă și FABS () funcție - valoarea absolută a unui număr în virgulă flotantă.

Acest lucru se explică prin faptul că C nu este susținută de ne-regruzka, și, prin urmare, fiecare dintre funcțiile trebuie să aibă numele lor propriu, chiar dacă toate acestea efectuează aceleași acțiuni. Acest lucru conduce la un neo-pravdali complică procesul de scriere a programelor.

Dezvoltatorul nu trebuie să se gândească numai acțiunile realizate de funcțiile, dar nu uitați, de asemenea, toate cele trei nume. O astfel de situație nu apare în Java, deoarece toate metodele care calcula valoarea au absolut același nume.

In standard biblioteca Java pentru calculul-TION a abs valoare absolută (este furnizată) metoda. suprasarcină sa este realizată în clasa de matematică pentru a procesa valorile tuturor tipurilor numerice.

Decizia cu privire la care nume, dar versiunea a metodei ABS () trebuie să fie numit, sistemul de execuție Java primește, bazat pe argumentul de tip.

supraîncărca valoarea principală este că oferă acces la metode legate de grup ne dupa nume comun. Prin urmare, abs nume denotă o acțiune globală pentru a efectua, în calitate de compilator selectează o realizare specifică a metodei de circumstanță ob.

Datorită polimorfismului câteva nume sunt reduse la unul. În ciuda simplitatea exemplului descris, a demonstrat că a primit-CIP polimorfism poate fi extins pentru a da seama cum să supraîncărcați Mogan face cu situații mai complexe în programare.

Atunci când o metodă este supraîncărcat, ei fiecare versiune poate efectua orice Corolar dei dorit. Pentru a stabili o relație de metode supraîncărcate există unele reguli rigide, dar din punct de vedere al stilului adecvat de programare metoda suprasolicitării presupune o relație similară. Prin urmare, pentru a utiliza același nume, nu trebuie să aibă legătură cu fiecare alte metode, deși este posibil.

De exemplu, măsoară SQR nume ar putea opta pentru metode care returnează pătrat și-rădăcina pătrată care numere în virgulă mobilă. Dar aceasta este o fundamental diferite operații.

O astfel de utilizare a metodei supraîncărcării este contrar practicii sale naznacheniyu.Na inițială ar trebui să supraîncărcați numai operațiuni strâns legate.

Este demn de menționat faptul că, programatorii Java folosesc adesea semnătura pe termen lung. Ce este?

În ceea ce privește limbajul Java semnătură reprezintă un nume de metodă și o listă a sa para metri. Atunci când supraîncărcarea metode următoarea regulă: nu există două UI-Toda, dintr-o clasă nu poate avea aceeași semnătură.

Cu toate acestea, trebuie să se țină seama de faptul că semnătura nu include tipul de întoarcere, deoarece nu este utilizat în Java atunci când se decide cu privire la suprasarcină.