Wpis z mikrobloga

#programowanie #java

Czy mógłbym prosić o wytłumaczenie, jak to jest z metodami statycznymi? W "Java Podstawy" jest napisane, że metody statyczne nie działają na obiektach, podczas gdy u mnie w eclipse kompiluje i działa kod, w którym wywołałem metodę statyczną przy pomocy obiektu...

Co źle rozumiem?

deklaracja metody:

public static int getB() {
return b;
}
  • 16
@htfhere: jeżeli jeszcze masz kłopot z przykładem użycia takiej metody, to rozważ sobie taki przypadek:
Masz klasę Samochod i chcesz sprawdzić co jakiś czas ile obiektów tej klasy jest w danym momencie stworzonych. W tym przypadku można właśnie użyć statycznych zmiennych i metod. W konstruktorze obiektu inkrementujesz zmienną statyczną, przy niszczeniu obiektu dekrementujesz. A następnie możesz użyć metody poprez nazwę klasy Samochod.ileJestObiektow() by sprawdzić ile jest obiektów.
@htfhere:

Metod statycznych uzywaj tylko i wylacznie wtedy gdy maja jasno zdefiniowane wejscie i wyjscie i nie modyfikuja zadnego zewnetrznego stanu badz nie sa zalezne od zewnetrznego stanu.

Metoda statyczna przy tych samych parametrach powinna zwrocic zawsze to samo.

Statyczne metody ktore modyfikuja stan poza swoim cialem badz sa zalezne od czegos z zewnatrz to tylko zrodlo masy problemow.

Przyklad ktory przedstawil @siwersss jest troche problematyczny.

Po 1.
Nie wiem po
@michalfranc: nie mam dużego doświadczenia, jednak przykład który podałem używam czasami przy robieniu gier, żeby mieć wyświetlone informacje ile obiektów pozostało na mapie. Jeżeli nie statyczna zmienna do liczenia, to jak inaczej można to rozwiązać, żeby nie było problematyczne?
@siwersss: Problematyczne nie oznacza ze przysporzy ci problemow :) Context jest bardzo wazny, czasami warto isc na skroty bo trzeba byc pragmatycznym a pisanie perfekcyjjnego kodu to strata czasu.

1. Czemu chcesz wiedziec ile obiektow pozostalo na mapie ? Debugowanie gry ?