Jason. Cała informatyka w jednym miejscu!

Przynoszę Wam następne akapity kręcące się wokół języka Java. Opiszemy sobie czym jest słowo kluczowe "static" w języku Java. To jest jeden z tych tematów, który również jest często spotykany i wykorzystywany w praktyce. To brzmi na tyle poważnie, że postanowiłem zabrać się i za zmienne, i za metody statyczne. Nie uciekajcie od tego z krzykiem :D. To trzeba zrozumieć!

"STATIC" W JĘZYKU JAVA OD STRONY TEORETYCZNEJ

Słownik języka polskiego twierdzi, iż "statyczność" oznacza coś nieulegającego zmianom lub stojącego w bezruchu. Zostawmy ojczysty język w spokoju i skupmy się na dopasowaniu definicji do programowania :). Zacznijmy od informacji, że obejmuje to zmienne i metody. Od tej chwili będę określał to zmiennymi "zwykłymi" i zmiennymi "statycznymi". To samo tyczy się metod. W Javie zmienia to punkt widzenia w zależności od tego, w którym miejscu umieszczamy modyfikator "static", bo to on odpowiada za statyczność.

Jeżeli zmienna jest statyczna, to zachowuje ona tę samą wartość niezależnie od tworzonych obiektów. Staje się to przydatne gdy chcemy, aby wartość należała do samej klasy i nie została utracona w wyniku "posprzątania" obiektu przez wbudowany odśmiecacz pamięci. Statyczność zmiennej powoduje jej "przetrzymanie" dopóty, dopóki proces programu nie zostanie zakończony. Z kolei jeżeli metoda jest statyczna, to staje się niezależna od tworzonych instancji i pozwala na wykonywanie instrukcji z poziomu klasy. Spójrzcie chociażby na klasę "Math". Czy kiedykolwiek byliście zmuszeni do utworzenia zmiennej typu "Math"? Nie :D! Właśnie dlatego, że są to metody statyczne których zadaniem jest "przyniesienie" rozwiązania z dowolnego miejsca.

W obu przypadkach, "static" w języku Java wpływa na miejsce przechowywania takiej danej. Tam, gdzie dotychczas do tworzonych zmiennych i metod uzyskiwało się dostęp poprzez instancję (kopię) klasy (pod warunkiem, że modyfikator ustawiono na publiczny), tak dana statyczna znajduje się bezpośrednio W KLASIE i za jej pomocą można dostać się do nich. W poniższym kodzie źródłowym zostało to przedstawione.

PRZYKŁAD KODU ŹRÓDŁOWEGO

Spróbujmy obu tych rzeczy w praktyce. Zastosujemy statyczność w języku Java dla zmiennej i dla metody. Oto kod źródłowy:

KLASA "MAIN"

public class Main {
	public static void main(String[] args) {
		System.out.println(Point.count());

		Point pa = new Point(5, 7);
		Point pb = new Point(2, 78);

		System.out.println(Point.count());
	}
}

KLASA "POINT"

public class Point {
	private static int createdPoints = 0;
	
	private final int x, y;

	public Point(int x, int y) {
		this.x = x;
		this.y = y;
		++createdPoints;
	}

	public static int count() {
		return createdPoints;
	}
}

Zmienna statyczna "createdPoints" przechowuje liczbę całkowitą dla wykrywania utworzonych punktów przez konstruktor. Normalnie to każda instancja otrzymywałaby wartość 1. Dodając "static" w języku Java do zmiennej, jesteśmy w stanie wpłynąć na sposób przechowywania i w takim przypadku, występuje JEDNA wartość umieszczona W KLASIE. Metoda statyczna "count" także zmienia zwyczajny przepływ programu. Tradycyjnie musielibyśmy odwołać się do którejś z dwóch instancji i po kropce podać nazwę. W powyższym przykładzie jesteśmy zwolnieni z tego obowiązku i odwołujemy się do metody statycznej poprzez KLASĘ, nie obiekt!

Spójrzcie uważnie na modyfikator "static" wyżej wymienionej metody, jest on obowiązkowy do prawidłowego skompilowania programu :O! Zasada jest taka, że jeżeli metoda operuje na danych statycznych, ona sama także musi być statyczna! Próba poplątania danych statycznych i "zwykłych" zakończy się błędem kompilacji! To dlatego, powołując się na metodę "main", musimy zamieniać metody i zmienne na statyczne!

"static" w języku Java

Modyfikator "static" umożliwia traktowanie zmiennej lub metody jako statycznej przez co dane znajdują się nie w obiekcie, a w samej klasie!


Kończymy na dzisiaj, posiedźcie przy tym i prześledźcie wszystko jeszcze raz na spokojnie. Słowo "static" w języku Java też wymaga dokładnego rozumienia, bo kiedyś na pewno się Wam przyda.

PODOBNE ARTYKUŁY