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

Wywołanie metody statycznej z nowym obiektem

Object Storage Arubacloud
0 głosów
800 wizyt
pytanie zadane 17 grudnia 2017 w Java przez rubesom Obywatel (1,690 p.)

Hej

Kiedy tworzę metodę statyczną to czy błędem będzie jej wywołanie na rzecz nowego obiektu?

Bo zauważyłem, że tak się da i działa.

Dwa przykłady:

		Gracz g2 = new Gracz();
        g2.dodaj(2);
		Gracz.dodaj(3);
		

Czy jest to w jakiś sposób niepoprawne?

1 odpowiedź

+1 głos
odpowiedź 17 grudnia 2017 przez Wiciorny Ekspert (269,590 p.)
wybrane 17 grudnia 2017 przez rubesom
 
Najlepsza

Nie wywołasz metody statycznej na zwykłym obiekcie, chyba- że ! Obiekt ten też będzie statyczny.

Statyczne metody są związane Z KLASĄ nie z obiektem, więc modyfikacje będą wprowadzone dla każdego kolejnego obiektu tej klasy

Gracz.dodaj(3);

to jest wywołanie na rzecz klasy, co jest niepoprawne. chyba, że metoda jest statyczna i odwołuje się własnie do statycznego pola w tej klasie, wtedy to ma racje bytu " ale doda tę wartość" dla wszystkich innych graczy/obiektów tej klasy 

komentarz 17 grudnia 2017 przez rubesom Obywatel (1,690 p.)

Chodzi mi o to, że taki zapis do metody statycznej też działa:

Gracz g2 = new Gracz();
g2.dodaj(2);

Zadziała to tak samo jak standardowe wywołanie metody statycznej?:

Gracz.dodaj(3);

Czy to pierwsze wywołanie będzie jednak błędne na rzecz takiej metody statycznej (pole też mam statyczne)?:

    public static int dodaj(int a)
    {
        a1 = a;
        return a1;
    }

 

Rozumiem o co chodzi z polami statycznymi ale chodzi mi o samo ich używanie - czy to pierwsze wywołanie jest błędne czy jest też dopuszczalne?

1
komentarz 17 grudnia 2017 przez Wiciorny Ekspert (269,590 p.)
oba zadziałają tak samo, jednak implementacyjnie NIE POWINNO SIĘ robić tak na rzecz obiektu ... bo to może w przyszłości spowodować "nieoczekiwane, niezrozumiałę błędy"

Zła praktyka: ktoś kto później przeglądać będzie twój kod w locie- może  wprawić się w zakłopotanie, np przy korzystaniu czy refaktoryzacji

Druga sprawa: jednak jeśli są zestawy innych metod, nie statycznych etc. to jest różnica  w korzystaniu z obiektu ( wiadomo, to w końcu instancja osoba ), jednak kolejne obiekty którę utworzysz beda miały wartość a =3 ... juz w tej sytuacji
2
komentarz 17 grudnia 2017 przez Aisekai Nałogowiec (42,190 p.)
Zależy od przypadku. Zauważ, że masz sporo funkcji statycznych których można użyć (metody z klasy Math) ale metody statyczne się trudniej testuje. Drugą sprawą jest to, że w programowaniu zorientowanym obiektowo (a język java jest zorientowana obiektowo) często się podmienia jakieś instancje danych klas (polimorfizm) które mogą mieć różne implementacje metod bez większych zmian w kodzie.
komentarz 17 grudnia 2017 przez rubesom Obywatel (1,690 p.)
A jak to jest z klasą Math, że nie mogę zrobić jej obiektu?

Z tego co widzę w Java API to jest to klasa typu final ale nie oznacz to, że nie mogę zrobić jej obiektu. Co blokuje mi stworzenie jej obiektu?

Podobne pytania

0 głosów
1 odpowiedź 66 wizyt
pytanie zadane 2 grudnia 2020 w Java przez rubesom Obywatel (1,690 p.)
0 głosów
1 odpowiedź 132 wizyt
pytanie zadane 4 kwietnia 2020 w Java przez malybyq Użytkownik (980 p.)
0 głosów
2 odpowiedzi 250 wizyt
pytanie zadane 17 maja 2022 w Java przez Arek Kowalski Początkujący (450 p.)

92,539 zapytań

141,382 odpowiedzi

319,476 komentarzy

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

...