Maison >Java >javaDidacticiel >Mot clé statique : accès aux membres statiques et non statiques dans les méthodes
Dans cet article, nous nous concentrerons sur comment les méthodes interagissent avec les membres statiques et non statiques et pourquoi les variables locales statiques ne le sont pas. autorisé. Il s'agit d'un sujet d'entretien courant et d'un concept crucial pour les développeurs Java.
Cet article s'appuie sur les concepts abordés dans les articles précédents de cette série. Si vous débutez avec le mot-clé statique, je vous recommande de consulter Bloc statique et Variables statiques pour une meilleure base avant de plonger dans les sujets abordés ici.
Étant donné que les méthodes statiques fonctionnent au niveau de la classe, elles ne peuvent pas accéder directement aux membres de l'instance.
package keywords.static_keyword; public class StaticVariables { // Static and non-static variables static int idStatic = 1; // Shared across all instances int id; // Unique to each instance String name; // Unique to each instance // Static block – Runs once when the class is loaded static { displayStatic(); // Call to static method // Cannot access non-static method in static block display(); // --> Compilation error } // Constructor to initialize non-static variables public StaticVariables(String name) { this.id = ++idStatic; // Increment static ID for every new instance this.name = name; } // Non-static method: Can access both static and non-static members void display() { System.out.println("Instance Method:"); System.out.println("Static ID: " + idStatic + ", Instance ID: " + id + ", Name: " + name); } // Static method: Can only access static members directly static void displayStatic() { System.out.println("Static Method:"); System.out.println("Static ID: " + idStatic); // Static local variables are not allowed static int localVar = 10; // --> Compilation error } public static void main(String[] args) { // Call static method directly displayStatic(); // Create instances to access non-static methods StaticVariables obj1 = new StaticVariables("Object1"); StaticVariables obj2 = new StaticVariables("Object2"); // Access non-static methods through objects obj1.display(); obj2.display(); } }
Java n'autorise pas les variables locales statiques à l'intérieur des méthodes ou des blocs.
package keywords.static_keyword; public class StaticVariables { // Static and non-static variables static int idStatic = 1; // Shared across all instances int id; // Unique to each instance String name; // Unique to each instance // Static block – Runs once when the class is loaded static { displayStatic(); // Call to static method // Cannot access non-static method in static block display(); // --> Compilation error } // Constructor to initialize non-static variables public StaticVariables(String name) { this.id = ++idStatic; // Increment static ID for every new instance this.name = name; } // Non-static method: Can access both static and non-static members void display() { System.out.println("Instance Method:"); System.out.println("Static ID: " + idStatic + ", Instance ID: " + id + ", Name: " + name); } // Static method: Can only access static members directly static void displayStatic() { System.out.println("Static Method:"); System.out.println("Static ID: " + idStatic); // Static local variables are not allowed static int localVar = 10; // --> Compilation error } public static void main(String[] args) { // Call static method directly displayStatic(); // Create instances to access non-static methods StaticVariables obj1 = new StaticVariables("Object1"); StaticVariables obj2 = new StaticVariables("Object2"); // Access non-static methods through objects obj1.display(); obj2.display(); } }
static void displayStatic() { static int localVar = 10; // --> Compilation error }
Context | Access Static Members | Access Non-Static Members | Allow Static Local Variables? |
---|---|---|---|
Static Method | Yes | No | No |
Non-Static Method | Yes | Yes | No |
Static Block | Yes | No | No |
Les méthodes et membres statiques sont des outils essentiels en Java. Voici les principaux points à retenir :
En comprenant ces règles, vous serez en mesure d'utiliser efficacement les méthodes statiques dans vos programmes.
Principes fondamentaux de Java
Les essentiels de l'entretien avec Array
L'essentiel de la mémoire Java
L'essentiel du cadre de collections
Bon codage !
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!