• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Java metody przeciążone

Object Storage Arubacloud
0 głosów
510 wizyt
pytanie zadane 5 lutego 2017 w Java przez niezalogowany

Witam,

chciałem się Was zapytać, które waszym zdaniem to metody przeciążone.Nie ma tu jakiegoś podstępu / haczyka? Według mnie wszystkie grupy metod są przeciążone. :)

 

--- pierwsza grupa metod ---
public double PrzeliczWalute(String nazwa, double kurs){}
public int PrzeliczWalute(String nazwa){}

--- druga grupa metod ---
public double PrzeliczWalute(double kurs, String nazwa{}
public double PrzeliczWalute(String nazwa, double kurs){}

--- trzecia grupa metod ---
public double PrzeliczWalute(String nazwa){}
public double PrzeliczWalute(double waluta){}

 

1 odpowiedź

0 głosów
odpowiedź 5 lutego 2017 przez Adrian Spora Mądrala (5,100 p.)
wybrane 5 lutego 2017
 
Najlepsza

Tak, wszystkie grupy metod są przeciążone. 

Kompilator przy przeciążaniu bierze pod uwagę nazwę funkcji i typ parametrów, które przyjmuje - kolejność ma znaczenie. Nie jest natomiast brany pod uwagę zwracany typ, bo załóżmy taką sytuację:

public double PrzeliczWalute(double waluta){ /* return ... */ }
public int PrzeliczWalute(double waluta){/* return ... */}

Niby metody różnią się typem zwracanym, ale kompilator nie jest w stanie wiedzieć jaką metodę programista miał na myśli wywołując ją. 

Przeciążenia metod muszą być jednoznaczne. tzn. kompilator nie może mieć jakichkolwiek wątpliwości, którą metodę wywołać, w przypadku kiedy programista będzie chciał jej użyć.

 

komentarz 5 lutego 2017 przez niezalogowany

Ten przypadek wydaje mi się dziwny: Kolejność parametrów ... :)

 

--- druga grupa metod ---
public double PrzeliczWalute(double kurs, String nazwa{}
public double PrzeliczWalute(String nazwa, double kurs){}

 

komentarz 5 lutego 2017 przez Adrian Spora Mądrala (5,100 p.)

Taka sytuacja jest dozwolona, bo typ parametrów jest unikalny. W pierwszej metodzie najpierw musisz podać argument typu double, w drugiej typu String. Kompilator nie ma problemu z dopasowaniem odpowiedniej funkcji. W przypadku wywołania:

PrzeliczWalute(9.99, "PLN");

kompilator dopasuje pierwszą funkcję, a w przypadku podania typów argumentów na odwrót - drugą.

komentarz 5 lutego 2017 przez niezalogowany
Dziękuję. :)

Podobne pytania

+2 głosów
2 odpowiedzi 5,144 wizyt
pytanie zadane 4 lutego 2017 w Java przez Wiciorny Ekspert (270,190 p.)
0 głosów
1 odpowiedź 236 wizyt
pytanie zadane 2 marca 2017 w Java przez Kloda Użytkownik (760 p.)
0 głosów
1 odpowiedź 1,374 wizyt
pytanie zadane 5 listopada 2017 w C i C++ przez Jakub 0 Pasjonat (23,120 p.)

92,576 zapytań

141,426 odpowiedzi

319,652 komentarzy

61,961 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...