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

Jaki jest cel przeciążania metod w Javie?

Object Storage Arubacloud
0 głosów
437 wizyt
pytanie zadane 14 października 2018 w Java przez Kubs Mądrala (5,190 p.)

Jaki jest sens przeciążania metod? Skoro potrzebujemy 'double' to możemy po prostu usunąć linijkę z 'int' i zostawić tylko drugą metodę z 'double'.

 

public int dodaj (int a, int b) {
      return a+b;
}

public double dodaj (double a, double b) {
      return a+b;
}
    

 

komentarz 14 października 2018 przez Aisekai Nałogowiec (42,190 p.)
Zauważ, że obie te metody zwracają różne typy. I gdybyś pozbył się metody z intami, to próbując zapisać w zmiennej int wynik metody zimującej, musiałbyś jakoś rzutować/zaokrąglać wynik - a takie coś w pewien sposób zmniejsza czytelność kodu.
komentarz 14 października 2018 przez Kubs Mądrala (5,190 p.)
Dziękuje. Cieżko jeszcze mi to dokładnie zrozumieć ale zawsze to jakaś informacja.

2 odpowiedzi

0 głosów
odpowiedź 14 października 2018 przez adrian17 Ekspert (344,860 p.)

 Skoro potrzebujemy 'double' to możemy po prostu usunąć linijkę z 'int' i zostawić tylko drugą metodę z 'double'.

A jeśli potrzebujesz zarówno po 'int', jak i po 'double'?

komentarz 14 października 2018 przez Kubs Mądrala (5,190 p.)
@Aisekai dziekuje, a moglabys podac przyklad?
1
komentarz 14 października 2018 przez adrian17 Ekspert (344,860 p.)
String a = s.replace('a', 'b');
String b = s.replace("ala", "bob");

Dzięki przeładowaniom masz możliwość zarówno wywołać replace() by zamienić znak innym znakiem, jak i żeby zastąpić string innym stringiem.

Gdyby metoda brała tylko stringi jako argumenty (nie miała przeładowania dla `char`), musiałbyś samemu konwertować znaki na stringi.

1
komentarz 14 października 2018 przez Aisekai Nałogowiec (42,190 p.)
Moglbym. Przykład który mi przychodzi do głowy jako pierwszy: tworzenie wszelkiego rodzaju List. Możesz utworzyć liste, która na początku będzie pusta albo jako parametr konstruktora podać jakąś tablicę która "będzie w liscie". Teoretycznie domyślną wartością tutaj jest pusta lista.

Ale przykład gdzie widać to bardziej: tworząc obiekt JFrame nie musisz podawać parametru konstruktora - wtedy okno nie będzie miało tutulu. Ale, możesz też podać jakiegoś Stringa który ma być tytulem. Możesz też np tworząc klasę User z polem money, ustawić jako domyślna wartość money=0, albo mozesz ustawić konkretną wartosc. Albo w grach rpg, możesz ustawic domyślną wartość statystyk na 0 i zezwolić użytkownikowi rozdać statystyki, albo pozwolić mu randomowo ustalić statystyki.
komentarz 14 października 2018 przez Kubs Mądrala (5,190 p.)
Uf ,nie na moja wiedze o programowaniu jeszcze. Zaden przykład nie jestem w stanie zrozumieć :( Mimo to doceniam twoją odpowiedź.
komentarz 14 października 2018 przez Kubs Mądrala (5,190 p.)
@adrian17 Ok, już trochę pojmuje chociaż dość ciężko to idzie.

Ps. programujesz aplikacje mobilne na Android?
–1 głos
odpowiedź 14 października 2018 przez X3h Dyskutant (9,540 p.)
edycja 14 października 2018 przez X3h
Do wykonywania operacji na różnych zbiorach naprzemiennie z parametryzacją.
1
komentarz 14 października 2018 przez Kubs Mądrala (5,190 p.)
Dzięki. A co masz na myśli pisząc 'z premedytacją'?
1
komentarz 14 października 2018 przez X3h Dyskutant (9,540 p.)
Autokorekta :p
komentarz 14 października 2018 przez Kubs Mądrala (5,190 p.)
Ech ,wciaż nie rozumiem o co chodzi.

:)
komentarz 14 października 2018 przez X3h Dyskutant (9,540 p.)
Dzięki przeciążaniu metod można np. zrobić dodawanie obiektu, listy obiektów lub innych typów danych za pomocą jednej nazwy funkcji do klasy, która zawiera kolekcję. Ułatwia to pisanie kodu oraz sam późniejszy odczyt, ponieważ za pomocą samych refleksji można sprawdzić akceptowane typy. Nie trzeba pisać addVectorInt, addInt, addArrayListInt tylko add(VectorInt), add(Int), add(ArrayListInt). Tak jest ładniej i tyle.
komentarz 15 października 2018 przez Kubs Mądrala (5,190 p.)
Dziękuje. Czy możesz poprzeć to jakimś przykładowym kodem?
1
komentarz 17 października 2018 przez kejm_ Bywalec (2,310 p.)
Oj męczysz bułę Kubs ;D

Jest taka możliwość w javie to raczej ma sens skoro jej nie wycieli. Weź to za pewnik i idź dalej, a w pewnym momencie zobaczysz, że do tego wrócisz, wykorzystasz przeciążenie konstruktora, czy innej metody i zobaczysz, że to ma sens.

Podobne pytania

+1 głos
1 odpowiedź 282 wizyt
pytanie zadane 22 października 2018 w Java przez MarcinZielony Użytkownik (710 p.)
0 głosów
2 odpowiedzi 6,189 wizyt
pytanie zadane 27 sierpnia 2020 w Sieci komputerowe, internet przez KonDZIKs Bywalec (2,770 p.)
+1 głos
2 odpowiedzi 420 wizyt
pytanie zadane 11 listopada 2020 w Java przez Jedwab Użytkownik (550 p.)

92,552 zapytań

141,400 odpowiedzi

319,531 komentarzy

61,938 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!

...