Home >Java >javaTutorial >Do Static Methods Actually Inherit in Java?
Static Methods in Java Inheritance
Despite the common understanding that static methods are not inherited in Java, a puzzling exception exists. The confusion stems from a misunderstanding of the nature of inheritance in the Java language.
According to official Java documentation, all accessible methods are inherited by subclasses. This includes public, protected, and package-private methods. Inherited methods can be used as is, overridden, hidden, or supplemented with new methods.
In the case of static methods, the inheritance behavior is different only in that static methods that are overridden in the subclass hide the inherited method rather than overriding it. When invoked from the subclass, the hidden method in the subclass will execute instead of the inherited method.
Therefore, the ability to access and invoke the static method display() in class B is due to the fact that the method is inherited along with other accessible members of the superclass. The seemingly anomalous behavior of B.display() also works because it invokes the hidden static method in class B rather than the inherited one.
This distinction between overriding and hiding has significant implications. In the case of overriding, the method in the subclass always executes regardless of whether it is invoked from the superclass or subclass. However, in the case of hiding, the method that gets invoked depends on the context. If the static method is invoked from the superclass, the inherited method will execute; otherwise, the hidden method in the subclass will execute.
The above is the detailed content of Do Static Methods Actually Inherit in Java?. For more information, please follow other related articles on the PHP Chinese website!