Sobes.tech
Junior

Mis on staatilised muutujad?

sobes.tech AI

Vastus AI-lt

Statilised muutujad kuuluvad klassile, mitte konkreetsele eksemplarile. Need eksisteerivad ühes eksemplaris kogu programmi jooksul ning jagatakse kõigi selle klassi objektide vahel. Muutes statiikset muutujat ühe objekti poolt, on see nähtav ka teistele objektidele.

Peamised omadused:

  • Kuuluvus: Klassile.
  • Eksemplaride arv: Üks iga klassi kohta.
  • Eluaeg: Klass laadimisest kuni programmi lõppemiseni.
  • Juurdepääs: Tavaliselt klassi nime kaudu ClassName.staticVariable, kuigi juurdepääs objekti kaudu on samuti võimalik (mitte soovitatav).
  • Initsialiseerimine: Üks kord klassi laadimisel.

Kasutusnäited:

  • Klassist loodud objektide loendur.
  • Kõikidele klassidele ühised konstantsed väärtused.
  • Klassiga hallatavad ühised ressursid.

Java näide:

class MyClass {
    static int counter = 0; // Statiline muutuja

    public MyClass() {
        counter++; // Suurendab statiistilist loendurit objekti loomisel
    }

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

        System.out.println(MyClass.counter); // Väljund: 2
    }
}

Python näide:

class MyClass:
    counter = 0  # Statiline muutuja

    def __init__(self):
        MyClass.counter += 1  # Suurendab statiistilist loendurit

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

        print(MyClass.counter) # Väljund: 2

    if __name__ == "__main__":
        main()