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()