Sobes.tech
Junior

Czym są zmienne statyczne?

sobes.tech AI

Odpowiedź od AI

Zmienne statyczne należą do klasy, a nie do konkretnego egzemplarza. Istnieją w pojedynczym egzemplarzu przez cały czas działania programu i są współdzielone przez wszystkie obiekty tej klasy. Zmiana zmiennej statycznej przez jeden obiekt będzie widoczna dla innych obiektów.

Główne cechy:

  • Przynależność: Do klasy.
  • Liczba egzemplarzy: Jeden na klasę.
  • Czas życia: Od momentu załadowania klasy do zakończenia programu.
  • Dostęp: Zazwyczaj przez nazwę klasy ClassName.staticVariable, choć dostęp przez instancję jest również możliwy (niezalecane).
  • Inicjalizacja: Raz podczas ładowania klasy.

Przykłady użycia:

  • Liczniki utworzonych obiektów klasy.
  • Stałe wspólne dla całej klasy.
  • Wspólne zasoby zarządzane przez klasę.

Przykład w Java:

class MyClass {
    static int counter = 0; // Zmienna statyczna

    public MyClass() {
        counter++; // Zwiększa licznik statyczny przy tworzeniu obiektu
    }

    public static void main(String[] args) {
        MyClass obj1 = new MyClass();
        MyClass obj2 = new MyClass();

        System.out.println(MyClass.counter); // Wyjście: 2
    }
}

Przykład w Python:

class MyClass:
    counter = 0  # Zmienna statyczna

    def __init__(self):
        MyClass.counter += 1  # Zwiększa licznik statyczny

    def main():
        obj1 = MyClass()
        obj2 = MyClass()

        print(MyClass.counter) # Wyjście: 2

    if __name__ == "__main__":
        main()