Stałe (static final)
Część sekcji Programowanie obiektowe ścieżki Java w Coddy. Lekcja 18 z 87.
Połączenie static i final tworzy stałą — wartość, która należy do klasy i nigdy nie może się zmienić. To standardowy sposób definiowania stałych w Javie.
public class GameSettings {
public static final int MAX_PLAYERS = 4;
public static final double GRAVITY = 9.81;
public static final String GAME_TITLE = "Space Adventure";
}Zgodnie z konwencją nazwy stałych zapisuje się w formacie UPPER_SNAKE_CASE, aby odróżnić je od zwykłych zmiennych. Ponieważ są zarówno static, jak i final, odwołujesz się do nich za pomocą nazwy klasy, a ich wartości na pewno nigdy się nie zmienią:
System.out.println(GameSettings.MAX_PLAYERS); // 4
// GameSettings.MAX_PLAYERS = 8; // Błąd! Nie można zmienićStałe są zazwyczaj deklarowane jako public, ponieważ mają być współdzielone w całej aplikacji. Pomyśl o wartościach takich jak Math.PI — to publiczna, statyczna stała finalna, której może używać dowolny kod.
Dlaczego używać stałych zamiast wartości zapisanych na sztywno? Jeśli w całym kodzie wpiszesz 4 i później trzeba będzie zmienić ją na 6, trzeba będzie znaleźć i zaktualizować każde wystąpienie. W przypadku stałej takiej jak MAX_PLAYERS zmieniasz ją w jednym miejscu.
Stałe sprawiają też, że kod jest bardziej czytelny — MAX_PLAYERS jest bardziej zrozumiałe niż tajemnicze 4.
Wyzwanie
ŁatwyZbudujmy narzędzie MathConstants, które przechowuje ważne wartości matematyczne jako stałe, oraz CircleCalculator, które używa tych stałych do wykonywania obliczeń.
Utworzysz dwa pliki, aby uporządkować swój kod:
MathConstants.java: Utwórz klasę przechowującą stałe matematyczne w polachpublic static final:PIo wartości3.14159E(liczba Eulera) o wartości2.71828GOLDEN_RATIOo wartości1.61803
Main.java: Użyj swoich stałych do obliczeń dotyczących okręgu. Otrzymasz promień jako dane wejściowe i wypiszesz trzy wiersze:- Pole okręgu:
Area: [value] - Obwód okręgu:
Circumference: [value] - Średnica pomnożona przez złoty stosunek:
Golden Diameter: [value]
- Pole okręgu:
Wykonaj obliczenia według wzorów:
- Pole = PI * radius * radius
- Obwód = 2 * PI * radius
- Złota średnica = 2 * radius * GOLDEN_RATIO
Otrzymasz jedną daną wejściową: promień (double).
Sformatuj wszystkie wartości wyjściowe do 2 miejsc po przecinku, używając String.format("%.2f", value). Odwołuj się do stałych przez nazwę klasy, na przykład MathConstants.PI.
Spróbuj swoich sił
import java.util.Scanner;
class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
double radius = scanner.nextDouble();
// TODO: Oblicz pole, używając MathConstants.PI
// Wzór: PI * radius * radius
// TODO: Oblicz obwód, używając MathConstants.PI
// Wzór: 2 * PI * radius
// TODO: Oblicz złotą średnicę, używając MathConstants.GOLDEN_RATIO
// Wzór: 2 * radius * GOLDEN_RATIO
// TODO: Wypisz wyniki z dokładnością do 2 miejsc po przecinku
// Użyj String.format("%.2f", value) do formatowania
// Format wyjściowy:
// Pole: [value]
// Circumference: [value]
// Golden Diameter: [value]
}
}Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Wszystkie lekcje w sekcji Programowanie obiektowe
1Podstawy programowania obiektowego
Pliki zewnętrzneWprowadzenie do programowania obiektowegoKlasy a obiektySłowo kluczowe thisMetodyPola (atrybuty)Metoda konstruktoraPrzeciążanie konstruktoraPodsumowanie — prosty kalkulator4Dziedziczenie
Podstawy dziedziczenia (extends)Słowo kluczowe superPrzesłanianie metod (@Override)Łańcuch wywołań konstruktorówKlasa ObjectDziedziczenie jedno- i wielopoziomoweDlaczego Java nie obsługuje wielodziedziczenia klasPodsumowanie – hierarchia pracowników7Metody specjalne i klasa Object
Metoda toString()equals() i hashCode()Metoda clone()compareTo() i ComparableInterfejs ComparatorPodsumowanie — własne sortowanie10Obsługa wyjątków w programowaniu obiektowym
Hierarchia klas wyjątkówWłasne wyjątkiBłędy sprawdzane a niesprawdzaneWzorzec try-with-resourcesPodsumowanie – zweryfikowany użytkownik2Modyfikatory dostępu i enkapsulacja
Przegląd poziomów dostępuMetody pobierające i ustawiająceUkrywanie informacjiSłowo kluczowe finalPodsumowanie — menedżer kont bankowych5Polimorfizm
Podstawy przeciążania metodPrzesłanianie metod (w czasie wykonywania)Rzutowanie w górę i w dółOperator instanceofKlasy i metody abstrakcyjnePowtórka — kalkulator figur8Zaawansowane koncepcje OOP
Kompozycja a dziedziczenieAgregacja a kompozycjaKlasy wewnętrzne, zagnieżdżone i anonimoweEnumy i metody enumówRekordy (Java 16+)Klasy zapieczętowane (Java 17+)11Wzorce projektowe — część 1
Wprowadzenie do wzorców projektowychWzorzec SingletonWzorzec FactoryWzorzec BuilderWzorzec ObserverWzorzec Strategy3Właściwości klas i składowe statyczne
Zmienne instancji a zmienne statyczneMetody statyczneBloki statyczneStałe (static final)Powtórka – Counter i Utility6Interfejsy i klasy abstrakcyjne
Wprowadzenie do interfejsówImplementowanie interfejsówImplementacja wielu interfejsówMetody domyślne i statyczne w interfejsieKlasy abstrakcyjne a interfejsyInterfejsy funkcyjnePodsumowanie — system płatnościPoćwicz samodzielnie: Kompilator Java online