Héritage des méthodes statiques en Java
La documentation sur l'héritage en Java explique que les membres sont hérités en fonction de leur accessibilité. Cependant, il semble y avoir une divergence en ce qui concerne les méthodes statiques.
Selon la documentation, les méthodes statiques ne sont pas héritées. Mais le code suivant démontre que les méthodes statiques sont accessibles dans les sous-classes :
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(); } }
Comment est-ce possible ?
La réponse réside dans l'implémentation sous-jacente de l'héritage en Java. Toutes les méthodes accessibles sont héritées par les sous-classes, quel que soit leur type (statique ou instance). Cependant, il existe une différence subtile entre l'héritage des méthodes statiques et des méthodes d'instance.
Lorsqu'une nouvelle méthode statique avec la même signature est définie dans une sous-classe, l'ancienne méthode statique est masquée plutôt que remplacée. Cela signifie que la nouvelle méthode statique est prioritaire lorsqu'elle est appelée depuis la sous-classe. Cependant, la méthode statique d'origine est toujours accessible en utilisant le nom de la superclasse.
En revanche, lorsqu'une méthode d'instance est remplacée dans une sous-classe, la nouvelle méthode d'instance remplace complètement l'ancienne méthode d'instance. C'est pourquoi les méthodes d'instance héritées ne sont pas accessibles par leur simple nom dans les sous-classes.
Par conséquent, bien que les méthodes statiques ne soient pas explicitement mentionnées comme héritées dans la documentation Java, elles sont implicitement héritées avec tous les autres membres accessibles. La seule différence dans l'héritage des méthodes statiques est qu'elles peuvent être masquées par des méthodes statiques avec la même signature dans les sous-classes.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!