Heim >Java >javaLernprogramm >Statisches Schlüsselwort: Überladen, Überschreiben und die Rolle von this und super
Dieser Beitrag erweitert unsere vorherigen Diskussionen zum Schlüsselwort static, indem er sich auf die Konzepte Methodenüberladung und Methodenüberschreibung im Kontext von Statik konzentriert Methoden. Wir werden auch untersuchen, wie sich die Schlüsselwörter this und super in einem statischen Kontext verhalten (oder nicht).
Wenn Sie mit dem statischen Schlüsselwort noch nicht vertraut sind, kann es hilfreich sein, zunächst die statischen Variablen und statischen Methoden durchzugehen.
Da dieser Beitrag auf das Verhalten von this und super in einem statischen Kontext eingeht, möchten Sie vielleicht auch dieses Schlüsselwort und Super-Schlüsselwort durchgehen.
Überladungstatischer Methoden
Warum statische Methoden nicht überschrieben werden können
Verwendung dieser und super Schlüsselwörter im statischen Kontext
Beispiele zur Veranschaulichung der Schlüsselkonzepte
In Java ermöglicht Überladen, dass Methoden mit demselben Namen mit unterschiedlichen Parameterlisten existieren. Statische Methoden können ebenso wie Instanzmethoden überladen werden. Beachten Sie jedoch, dass eine Überladung zur Kompilierungszeit auftritt.
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"); } }
Methodenüberladung: Die displayText-Methode wird mit zwei Versionen überladen – eine ohne Parameter und eine mit einem String-Parameter.
Dies ist legal, da Java die beiden Methoden während der Kompilierungszeit anhand ihrer Parameterlisten unterscheiden kann.
Java erlaubt kein Überschreiben statischer Methoden. Da statische Methoden an die Klasse gebunden sind und nicht an eine Objektinstanz, nehmen sie nicht am Laufzeitpolymorphismus teil, der die Grundlage für das Überschreiben von Methoden ist.
Allerdings werden statische Variablen vererbt und können von untergeordneten Klassen aufgerufen oder geändert werden.
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 }
In diesem Beitrag haben wir die Nuancen des Überladens und Überschreibens statischer Methoden behandelt, die Einschränkungen bei der Verwendung von this und super in statischen Kontexten erörtert und erklärt, wie sich statische Variablen bei der Vererbung verhalten. Diese Konzepte sind wichtig, um zu verstehen, wie sich statische Mitglieder von Instanzmitgliedern in Java unterscheiden.
Java-Grundlagen
Array Interview Essentials
Java Memory Essentials
Collections Framework Essentials
Viel Spaß beim Programmieren!
Das obige ist der detaillierte Inhalt vonStatisches Schlüsselwort: Überladen, Überschreiben und die Rolle von this und super. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!