Metody statyczne to funkcje pomocnicze, które są wywoływane za pomocą samej nazwy klasy i bez użycia referencji do obiektu. Deklaracja takiej metody musi zawierać słowo kluczowe static. Metody statyczne mogą używać tylko statycznych składowych.
Przykład:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
public class Test { public static int liczba(int i) { return i; } public static void main(String args[]) { // wywołanie metody za pomocą nazwy klasy "Test" System.out.print(Test.liczba(10)); // nazwę klasy możemy pominąć, // a więc poniższy zapis będzie również poprawny System.out.println(liczba(10)); } } |
Składowe statyczne inicjalizowane są w chwili wczytywania klasy (tylko raz), czyli przed utworzeniem obiektu tej klasy. Zwykłe składowe inicjalizowane są za każdym razem, gdy tworzony jest nowy obiekt. Dzięki składowym statycznym wszystkie obiekty danej klasy mogą z nich korzystać – są współdzielone.
Przykład składowej statycznej:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
public class Test { static int liczba; public static int liczba(int i) { liczba = i; return liczba; } public static void main(String args[]) { System.out.print(Test.liczba(10)); } } |
Stałe to składowe, których wartości nie można zmieniać, poprzedzone są modyfikatorem final oraz static:
1 |
public static final double PI = 3.14; |
Metody mogą być finalne ale nie można ich przesłaniać:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
public class Test { public static final double PI = 3.14; static final void test() { System.out.println(PI); } public static void main(String args[]) { Test.test(); } } |
Klasa również może być finalna ale nie można jej rozszerzać, a więc tworzyć klas potomnych poprzez dziedziczenie.
1 2 3 |
final class Test { // ... } |
Jeżeli klasę oznaczymy jako finalną, to jej składowe i metody nie muszą posiadać modyfikatora final:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
final class Test { static double PI = 3.14; static void test() { System.out.println(PI); } public static void main(String args[]) { Test.test(); } } |
Czytaj dalej: WYJĄTKI →