Zakresy zmiennych w języku Java czyli scope

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

  1. Zakres lokalny – Zmienna priceWithVAT w metodzie displayProductPrice jest zmienną lokalną, dostępną tylko w obrębie tej metody.
  2. Zakres instancji (obiektu) – Zmienna storeName jest zmienną instancji, co oznacza, że każdy obiekt StoreManager ma własną kopię tej zmiennej.
  3. Zakres klasowy (statyczny) – Zmienna VAT jest zmienną statyczną klasy StoreManager, współdzieloną przez wszystkie instancje tej klasy.
  4. Zakres blokowy – Zmienna greeting w metodzie displayStoreName jest 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.

Scroll to Top