Heim > Java > javaLernprogramm > Erben statische Methoden in Java?

Erben statische Methoden in Java?

DDD
Freigeben: 2024-12-11 19:28:10
Original
465 Leute haben es durchsucht

Do Static Methods Inherit in Java?

Vererbung statischer Methoden in Java

In der Dokumentation zur Vererbung in Java wird erläutert, dass Mitglieder basierend auf ihrer Zugänglichkeit vererbt werden. Allerdings scheint es bei statischen Methoden eine Diskrepanz zu geben.

Statische Methoden werden laut Dokumentation nicht vererbt. Aber der folgende Code zeigt, dass auf statische Methoden in Unterklassen zugegriffen werden kann:

class A {
    public static void display() {
        System.out.println("Inside static method of superclass");
    }
}

class B extends A {
    public void show() {
        // This works - accessing display() by its simple name -
        // meaning it is inherited according to the book.
        display();
    }
}
Nach dem Login kopieren

Wie ist das möglich?

Die Antwort liegt in der zugrunde liegenden Implementierung der Vererbung in Java. Alle zugänglichen Methoden werden von Unterklassen geerbt, unabhängig von ihrem Typ (statisch oder Instanz). Es gibt jedoch einen subtilen Unterschied zwischen der Vererbung statischer Methoden und Instanzmethoden.

Wenn eine neue statische Methode mit derselben Signatur in einer Unterklasse definiert wird, wird die alte statische Methode ausgeblendet und nicht überschrieben. Dies bedeutet, dass die neue statische Methode Vorrang hat, wenn sie von der Unterklasse aufgerufen wird. Auf die ursprüngliche statische Methode kann jedoch weiterhin über den Namen der Oberklasse zugegriffen werden.

Im Gegensatz dazu ersetzt die neue Instanzmethode die alte Instanzmethode vollständig, wenn eine Instanzmethode in einer Unterklasse überschrieben wird. Aus diesem Grund kann in Unterklassen nicht über ihren einfachen Namen auf geerbte Instanzmethoden zugegriffen werden.

Obwohl statische Methoden in der Java-Dokumentation nicht explizit als vererbt erwähnt werden, werden sie zusammen mit allen anderen zugänglichen Mitgliedern implizit vererbt. Der einzige Unterschied bei der Vererbung statischer Methoden besteht darin, dass sie in Unterklassen durch statische Methoden mit derselben Signatur ausgeblendet werden können.

Das obige ist der detaillierte Inhalt vonErben statische Methoden in Java?. 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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage