Heim > Java > javaLernprogramm > Hauptteil

Können statische Methoden in Java überschrieben werden? Die überraschende Antwort.

Barbara Streisand
Freigeben: 2024-10-28 18:04:02
Original
485 Leute haben es durchsucht

Can Static Methods be Overridden in Java? The Surprising Answer.

Überschreiben vs. Überladen statischer Methoden in Java

Statische Methoden sind ein integraler Bestandteil der objektorientierten Programmierung, ihr Verhalten in Java jedoch schon kann etwas verwirrend sein, insbesondere wenn es um das Überschreiben und Überladen geht.

Statische Methoden überschreiben

In Java ist das Überschreiben statischer Methoden im herkömmlichen Sinne nicht möglich. Dies liegt daran, dass statische Methoden an die Klasse und nicht an bestimmte Instanzen der Klasse gebunden sind. Wenn eine Unterklasse eine neue statische Methode mit demselben Namen wie eine Methode in der übergeordneten Klasse definiert, überschreibt sie daher nicht die übergeordnete Methode. Stattdessen wird es ausgeblendet.

Ausblenden bedeutet, dass der Compiler immer die statische Methode der Unterklasse aufruft, unabhängig vom Typ des Objekts, das die Methode aufruft. Dies liegt daran, dass die Methode zur Kompilierungszeit und nicht zur Laufzeit aufgelöst wird.

Statische Methoden überladen

Im Gegensatz zum Überschreiben ist bei statischen Methoden in Java eine Überladung möglich. Überladen bezieht sich auf die Möglichkeit, mehrere Methoden mit demselben Namen, aber unterschiedlichen Parameterlisten zu haben. Java ermöglicht das Überladen statischer Methoden, genau wie Instanzmethoden.

Der folgende Code zeigt den Unterschied zwischen dem Überschreiben und Überladen statischer Methoden:

<code class="java">class Parent {
    public static void method() {
        System.out.println("Parent method");
    }
}

class Child extends Parent {
    // Hides the static method in the parent class
    public static void method() {
        System.out.println("Child method");
    }

    // Overloads the static method in the parent class
    public static void method(int x) {
        System.out.println("Child method with parameter");
    }
}

public class Main {
    public static void main(String[] args) {
        Parent p = new Child();
        p.method(); // Calls the static method in the Child class
        Child.method(); // Also calls the static method in the Child class
        Child.method(10); // Calls the overloaded static method in the Child class
    }
}</code>
Nach dem Login kopieren

Ausgabe:

Child method
Child method
Child method with parameter
Nach dem Login kopieren

Im obigen Beispiel verbirgt die method()-Methode in der Child-Klasse die method()-Methode in der Parent-Klasse. Allerdings überlädt die Methode method(int x) in der Child-Klasse die Methode method() in der Parent-Klasse.

Das obige ist der detaillierte Inhalt vonKönnen statische Methoden in Java überschrieben werden? Die überraschende Antwort.. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage