W języku Java, zakres zmiennej określa część programu, w której dana zmienna jest dostępna do użycia. Java definiuje cztery główne zakresy zmiennych: lokalny, instancji (obiektu), klasowy (statyczny) i blokowy. Rozumienie tych zakresów jest kluczowe dla efektywnego i bezbłędnego projektowania aplikacji. W tej lekcji przyjrzymy się każdemu z tych zakresów, używając przykładu, który nie dotyczy typowych obiektów jak samochód, oceny czy książka.
Przykład użycia różnych zakresów zmiennych w Java
Załóżmy, że tworzymy aplikację do zarządzania sklepem, która pozwoli na śledzenie ilości produktów i ich ceny. Zilustruje to użycie różnych zakresów zmiennych.
Klasa StoreManager
public class StoreManager {
    // Zmienna statyczna (klasowa) przechowująca VAT
    static double VAT = 0.23;
    // Zmienna instancji przechowująca nazwę sklepu
    String storeName;
    public StoreManager(String name) {
        // Inicjalizacja nazwy sklepu
        this.storeName = name;
    }
    public void displayProductPrice(double price) {
        // Lokalna zmienna przechowująca cenę z VAT
        double priceWithVAT = price * (1 + VAT);
        System.out.println("Cena produktu z VAT: " + priceWithVAT);
    }
    public void displayStoreName() {
        // Blok kodu
        {
            // Blokowa zmienna dostępna tylko w tym bloku
            String greeting = "Witaj w sklepie: ";
            System.out.println(greeting + storeName);
        }
        // Uwaga: Zmienna greeting nie jest dostępna poza blokiem
    }
}
Użycie klasy StoreManager
public class StoreApplication {
    public static void main(String[] args) {
        // Tworzenie instancji StoreManager
        StoreManager myStore = new StoreManager("Super Sklep");
        // Wywołanie metody wyświetlającej nazwę sklepu
        myStore.displayStoreName();
        // Wywołanie metody wyświetlającej cenę produktu
        myStore.displayProductPrice(100.0);
    }
}
Użycie klasy StoreManager
public class StoreApplication {
    public static void main(String[] args) {
        // Tworzenie instancji StoreManager
        StoreManager myStore = new StoreManager("Super Sklep");
        // Wywołanie metody wyświetlającej nazwę sklepu
        myStore.displayStoreName();
        // Wywołanie metody wyświetlającej cenę produktu
        myStore.displayProductPrice(100.0);
    }
}
Opis zakresów
- Zakres lokalny – Zmienna priceWithVATw metodziedisplayProductPricejest zmienną lokalną, dostępną tylko w obrębie tej metody.
- Zakres instancji (obiektu) – Zmienna storeNamejest zmienną instancji, co oznacza, że każdy obiektStoreManagerma własną kopię tej zmiennej.
- Zakres klasowy (statyczny) – Zmienna VATjest zmienną statyczną klasyStoreManager, współdzieloną przez wszystkie instancje tej klasy.
- Zakres blokowy – Zmienna greetingw metodziedisplayStoreNamejest zmienną blokową, dostępną tylko w obrębie danego bloku kodu.
Podsumowanie
Zrozumienie różnych zakresów zmiennych w Java jest niezbędne dla prawidłowego zarządzania dostępem do danych w aplikacji. Zakresy te pozwalają na kontrolę widoczności i żywotności zmiennych, co jest kluczowe dla bezpieczeństwa i efektywności kodu. W przykładzie aplikacji do zarządzania sklepem zilustrowaliśmy praktyczne zastosowanie tych zakresów, pokazując, jak można zarządzać informacjami o produktach i sklepie.
Jeżeli chcesz przyśpieszyć swoją naukę tworzenia stron chciałbym polecić mój kurs video Java w którym nauczysz się tego języka od podstaw do zaawansowanych jego aspektów.
