• 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?

0 głosów
1,278 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 Mentor (354,880 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 Mentor (354,880 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ź 442 wizyt
pytanie zadane 22 października 2018 w Java przez MarcinZielony Użytkownik (710 p.)
0 głosów
2 odpowiedzi 7,319 wizyt
pytanie zadane 27 sierpnia 2020 w Sieci komputerowe, internet przez KonDZIKs Bywalec (2,850 p.)
+1 głos
2 odpowiedzi 748 wizyt
pytanie zadane 11 listopada 2020 w Java przez Jedwab Użytkownik (550 p.)

93,692 zapytań

142,611 odpowiedzi

323,220 komentarzy

63,220 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

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...