Cet article étend nos discussions précédentes sur le mot-clé static en se concentrant sur les concepts de surcharge de méthode et de remplacement de méthode dans le contexte de static méthodes. Nous explorerons également comment les mots-clés this et super se comportent (ou non) dans un contexte statique.
Si vous débutez avec les mots-clés statiques, il peut être utile de commencer par parcourir les variables statiques et les méthodes statiques.
Étant donné que cet article aborde le comportement de this et super dans un contexte statique, vous souhaiterez peut-être également passer par This Keyword et Super Keyword.
Surcharge des méthodes statiques
Pourquoi les méthodes statiques ne peuvent pas être remplacées
Utiliser ceci et des super mots-clés dans un contexte statique
Exemples démontrant les concepts clés
En Java, la surcharge permet aux méthodes du même nom d'exister avec des listes de paramètres différentes. Les méthodes statiques peuvent être surchargées, tout comme les méthodes d'instance. Cependant, gardez à l’esprit que la surcharge se produit au moment de la compilation.
package keywords.static_keyword; public class StaticVariables { static int idStatic = 1; public StaticVariables(String name) { this.id = ++idStatic; this.name = name; } int id; String name; static void displayText() { System.out.println("DisplayText called. ID: " + idStatic); } // Overloaded static method with a parameter static void displayText(String name) { System.out.println("Overloaded DisplayText called. Name: " + name); } public static void main(String[] args) { StaticVariables.displayText(); StaticVariables.displayText("Static Overload Example"); } }
Surcharge de méthode : La méthode displayText est surchargée avec deux versions : une sans paramètres et une avec un paramètre String.
C'est légal puisque Java peut différencier les deux méthodes en fonction de leurs listes de paramètres pendant le temps de compilation.
Java ne permet pas de remplacer les méthodes statiques. Étant donné que les méthodes statiques sont liées à la classe plutôt qu'à une instance d'objet, elles ne participent pas au polymorphisme d'exécution, qui est à la base du remplacement de méthode.
Cependant, les variables statiques sont héritées et peuvent être consultées ou modifiées par les classes enfants.
package keywords.static_keyword; public class StaticVariables { static int idStatic = 1; public StaticVariables(String name) { this.id = ++idStatic; this.name = name; } int id; String name; static void displayText() { System.out.println("DisplayText called. ID: " + idStatic); } // Overloaded static method with a parameter static void displayText(String name) { System.out.println("Overloaded DisplayText called. Name: " + name); } public static void main(String[] args) { StaticVariables.displayText(); StaticVariables.displayText("Static Overload Example"); } }
package keywords.static_keyword; public class CannotOverrideStaticMethod extends StaticVariables { public CannotOverrideStaticMethod(String name) { super(name); } // Attempting to override the static method // This will cause a compile-time error /* @Override static void displayText() { System.out.println("Overridden DisplayText"); } */ @Override void display() { // Static variables are inherited from the parent class idStatic = 90; // Access and modify the parent's static variable System.out.println("ID: " + idStatic + ", Name: " + name); super.display(); // Call the parent class's non-static method } // Correct way to use static methods from the parent class static void displayText() { StaticVariables.displayText(); // Call the parent class static method } public static void main(String[] args) { displayText(); // Calls the static method defined in this class } }
static void displayText() { // Cannot use 'this' in a static context this.display(); // --> Compile-time error }
Dans cet article, nous avons abordé les nuances de la surcharge et du remplacement des méthodes statiques, discuté des contraintes liées à l'utilisation de this et super dans des contextes statiques et expliqué comment les variables statiques se comportent lors de l'héritage. Ces concepts sont essentiels pour comprendre en quoi les membres statiques diffèrent des membres d'instance en Java.
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!