Junior
Τι είναι οι στατικές μεταβλητές;
sobes.tech AI
Απάντηση από AI
Οι στατικές μεταβλητές ανήκουν στην κλάση, όχι σε συγκεκριμένο αντίγραφο. Υπάρχουν σε ένα μόνο αντίγραφο καθ' όλη τη διάρκεια εκτέλεσης του προγράμματος και μοιράζονται από όλα τα αντικείμενα αυτής της κλάσης. Η αλλαγή μιας στατικής μεταβλητής από ένα αντικείμενο θα είναι ορατή και σε άλλα αντικείμενα.
Βασικά χαρακτηριστικά:
- Ανήκει: Στην κλάση.
- Αριθμός αντιγράφων: Ένα ανά κλάση.
- Χρόνος ζωής: Από τη φόρτωση της κλάσης μέχρι το τέλος του προγράμματος.
- Πρόσβαση: Συνήθως μέσω του ονόματος της κλάσης
ClassName.staticVariable, αν και η πρόσβαση μέσω αντικειμένου είναι επίσης δυνατή (δεν συνιστάται). - Αρχικοποίηση: Μία φορά κατά τη φόρτωση της κλάσης.
Παραδείγματα χρήσης:
- Μετρητές δημιουργημένων αντικειμένων της κλάσης.
- Κοινές σταθερές για όλη την κλάση.
- Κοινόχρηστοι πόροι που διαχειρίζεται η κλάση.
Παράδειγμα σε Java:
class MyClass {
static int counter = 0; // Στατική μεταβλητή
public MyClass() {
counter++; // Αυξάνει τον στατικό μετρητή κατά τη δημιουργία αντικειμένου
}
public static void main(String[] args) {
MyClass obj1 = new MyClass();
MyClass obj2 = new MyClass();
System.out.println(MyClass.counter); // Έξοδος: 2
}
}
Παράδειγμα σε Python:
class MyClass:
counter = 0 # Στατική μεταβλητή
def __init__(self):
MyClass.counter += 1 # Αυξάνει τον στατικό μετρητή
def main():
obj1 = MyClass()
obj2 = MyClass()
print(MyClass.counter) # Έξοδος: 2
if __name__ == "__main__":
main()