JASON. GRY, MUZYKA, KURSY, ARTYKUŁY, PROGRAMY I FILMY!

Dzień zaczyna dobiegać końca, a ja na zachętę przynoszę Wam następne akapity kręcące się wokół języka Java. Opiszemy sobie czym jest statyczność 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! To trzeba zrozumieć!

STATYCZNOŚĆ 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śli metoda jest statyczna, to staje się niezależna od tworzonych instancji i pozwala na wykonywanie instrukcji z poziomu klasy z dowolnego innego miejsca w kodzie. Spójrzcie chociażby na klasę "Math". Czy kiedykolwiek byliście zmuszeni do utworzenia zmiennej typu "Math"? Nie! Właśnie dlatego, że są to metody statyczne których zadaniem jest "przyniesienie" rozwiązania z dowolnego miejsca.

W obu przypadkach, statyczność 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. Ta sama klasa "Point" tylko już bez metody "toString". Oto kod źródłowy:

KLASA "MAIN"

public class Main
{
	public static void main(String[] args)
	{
		Point pa, pb;

		System.out.println(Point.addedPoints());

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

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

KLASA "POINT"

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

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

	public static int addedPoints()
	{
		return pointsInWorld;
	}
}

Zmienna statyczna "pointsInWorld" przechowuje wartość liczbową dla wykrywania utworzonych punktów przez konstruktor. Normalnie to każda instancja otrzymywałaby wartość 1. Dodając statyczność 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 "addedPoints" też 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. Zasada jest taka, że jeśli 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, pisząc instrukcje bezpośrednio w metodzie "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. Statyczność w języku Java też wymaga dokładnego rozumienia, bo może się to Wam przydać.

PODOBNE ARTYKUŁY