Heim >Java >javaLernprogramm >Wie unterscheidet sich die Vererbung statischer Methoden von der Vererbung von Instanzmethoden in Java?
Statische Methodenvererbung in Java
In Java gelten die im „A Programmer's Guide to Java™ SCJP Certification“ beschriebenen Vererbungsregeln zum Beispiel Methoden. Zugängliche Instanzmethoden werden von Unterklassen geerbt. Die Erklärung des Buches berücksichtigt jedoch nicht das einzigartige Verhalten statischer Methoden bei der Vererbung.
Statische Methoden gehören, wie der Name schon sagt, zur Klasse und nicht zu einer Instanz. Sie sind über den Klassennamen zugänglich, unabhängig davon, welche Unterklasse auf sie zugreift. Diese Eigenschaft führt zu einer Abweichung von den Standardvererbungsregeln für Instanzmethoden.
Wenn eine Unterklasse eine statische Methode von ihrer Oberklasse erbt, ersetzt oder überschreibt sie die Methode nicht. Stattdessen bleibt die ursprüngliche statische Methode innerhalb der Unterklasse zugänglich. Dies steht im Gegensatz zu Instanzmethoden, bei denen es zu Überschreibungen kommen kann. Der Grund für diesen Unterschied besteht darin, dass statische Methoden der Klasse als Ganzes und nicht einzelnen Instanzen zugeordnet sind.
Im bereitgestellten Beispielcode kann Klasse B auf die statische Methode display() ihrer Oberklasse A zugreifen , wobei entweder der einfache Name display() oder der vollständig qualifizierte Name B.display() verwendet wird. Beide Ansätze sind gültig, da die statische Methode vererbt wird und Teil des eigenen Methodensatzes der Klasse B wird.
Es ist bemerkenswert, dass in den Sun Java Tutorials ausdrücklich angegeben ist, dass Unterklassen alle öffentlichen und geschützten Mitglieder ihrer Klasse erben Eltern, einschließlich statischer (Klassen-)Methoden. Der Unterschied zwischen geerbten statischen und nicht statischen Methoden liegt in ihrem Verhalten, wenn in der Unterklasse neue Methoden mit derselben Signatur definiert werden. Während nicht-statische Methoden überschrieben werden können, werden statische Methoden ausgeblendet. Dies bedeutet, dass die neue statische Methode in der Unterklasse Vorrang hat, wenn sie aus dieser Unterklasse aufgerufen wird, die ursprüngliche statische Methode jedoch weiterhin zugänglich bleibt, wenn sie aus der Oberklasse aufgerufen wird.
Das obige ist der detaillierte Inhalt vonWie unterscheidet sich die Vererbung statischer Methoden von der Vererbung von Instanzmethoden in Java?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!