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