Η στατική λέξη-κλειδί Java εξηγείται με παραδείγματα

Τι σημαίνει στατικό;

Όταν δηλώνετε μια μεταβλητή ή μια μέθοδο ως στατική, ανήκει στην τάξη και όχι σε μια συγκεκριμένη παρουσία. Αυτό σημαίνει ότι υπάρχει μόνο μία παρουσία στατικού μέλους, ακόμη και αν δημιουργείτε πολλά αντικείμενα της κλάσης ή εάν δεν δημιουργείτε κανένα. Θα κοινοποιηθεί από όλα τα αντικείμενα.

Η στατική λέξη-κλειδί μπορεί να χρησιμοποιηθεί με μεταβλητές, μεθόδους, μπλοκ κώδικα και ένθετες τάξεις.

Στατικές μεταβλητές

Παράδειγμα:

public class Counter { public static int COUNT = 0; Counter() { COUNT++; } }

Η COUNTμεταβλητή θα κοινοποιηθεί από όλα τα αντικείμενα αυτής της κλάσης. Όταν δημιουργούμε αντικείμενα της κατηγορίας μετρητή μας κυρίως και έχουμε πρόσβαση στη στατική μεταβλητή.

public class MyClass { public static void main(String[] args) { Counter c1 = new Counter(); Counter c2 = new Counter(); System.out.println(Counter.COUNT); } } // Outputs "2"

Η έξοδος είναι 2, επειδή η COUNTμεταβλητή είναι στατική και αυξάνεται κατά μία κάθε φορά που δημιουργείται ένα νέο αντικείμενο της κλάσης μετρητή. Μπορείτε επίσης να αποκτήσετε πρόσβαση στη στατική μεταβλητή χρησιμοποιώντας οποιοδήποτε αντικείμενο αυτής της κλάσης, όπως c1.COUNT.

Στατικές μέθοδοι

Μια στατική μέθοδος ανήκει στην τάξη και όχι στις παρουσίες. Έτσι, μπορεί να κληθεί χωρίς να δημιουργηθεί παρουσία τάξης. Χρησιμοποιείται για την αλλαγή στατικού περιεχομένου της τάξης. Υπάρχουν ορισμένοι περιορισμοί στατικών μεθόδων:

  1. Η στατική μέθοδος δεν μπορεί να χρησιμοποιήσει μη στατικά μέλη (μεταβλητές ή συναρτήσεις) της κλάσης.
  2. Η στατική μέθοδος δεν μπορεί να χρησιμοποιήσει thisή superλέξεις-κλειδιά.

Παράδειγμα:

public class Counter { public static int COUNT = 0; Counter() { COUNT++; } public static void increment(){ COUNT++; } }

Οι στατικές μέθοδοι μπορούν επίσης να κληθούν από την παρουσία της τάξης.

public class MyClass { public static void main(String[] args) { Counter.increment(); Counter.increment(); System.out.println(Counter.COUNT); } } // Outputs "2"

Η έξοδος είναι 2 επειδή αυξάνεται με στατική μέθοδο increament(). Παρόμοια με τις στατικές μεταβλητές, οι στατικές μέθοδοι μπορούν επίσης να προσεγγιστούν χρησιμοποιώντας μεταβλητές παρουσίας.

Στατικά μπλοκ

Τα μπλοκ στατικού κώδικα χρησιμοποιούνται για την προετοιμασία στατικών μεταβλητών. Αυτά τα μπλοκ εκτελούνται αμέσως μετά τη δήλωση στατικών μεταβλητών.

Παράδειγμα:

public class Saturn { public static final int MOON_COUNT; static { MOON_COUNT = 62; } }
public class Main { public static void main(String[] args) { System.out.println(Saturn.MOON_COUNT); } } // Outputs "62"

Η έξοδος είναι 62, επειδή η μεταβλητή MOON_COUNTαντιστοιχεί στην τιμή στο στατικό μπλοκ.

Στατικές ένθετες τάξεις

Μια τάξη μπορεί να έχει στατική ένθετη τάξη στην οποία μπορείτε να έχετε πρόσβαση χρησιμοποιώντας το όνομα εξωτερικής κλάσης.

Παράδειγμα:

public class Outer { public Outer() { } public static class Inner { public Inner() { } } }

Στο παραπάνω παράδειγμα, η τάξη Innerμπορεί να προσεγγιστεί άμεσα ως στατικό μέλος της τάξης Outer.

public class Main { public static void main(String[] args) { Outer.Inner inner = new Outer.Inner(); } }

Μία από τις περιπτώσεις χρήσης στατικών ένθετων τάξεων στο Builder Pattern που χρησιμοποιείται ευρέως στην java.