Maison >Java >javaDidacticiel >Les méthodes statiques héritent-elles réellement de Java ?
Méthodes statiques dans l'héritage Java
Malgré la compréhension commune selon laquelle les méthodes statiques ne sont pas héritées en Java, il existe une exception déroutante. La confusion vient d'une incompréhension sur la nature de l'héritage dans le langage Java.
Selon la documentation officielle Java, toutes les méthodes accessibles sont héritées par les sous-classes. Cela inclut les méthodes publiques, protégées et privées du package. Les méthodes héritées peuvent être utilisées telles quelles, remplacées, masquées ou complétées par de nouvelles méthodes.
Dans le cas des méthodes statiques, le comportement de l'héritage n'est différent que dans la mesure où les méthodes statiques remplacées dans la sous-classe masquent l'héritage. méthode plutôt que de la remplacer. Lorsqu'elle est invoquée depuis la sous-classe, la méthode cachée de la sous-classe s'exécutera à la place de la méthode héritée.
Par conséquent, la possibilité d'accéder et d'invoquer la méthode statique display() dans la classe B est due au fait que La méthode est héritée avec les autres membres accessibles de la superclasse. Le comportement apparemment anormal de B.display() fonctionne également car il invoque la méthode statique cachée dans la classe B plutôt que celle héritée.
Cette distinction entre remplacement et masquage a des implications significatives. En cas de substitution, la méthode de la sous-classe s'exécute toujours, qu'elle soit invoquée depuis la superclasse ou la sous-classe. Cependant, en cas de masquage, la méthode invoquée dépend du contexte. Si la méthode statique est invoquée depuis la superclasse, la méthode héritée s'exécutera ; sinon, la méthode cachée dans la sous-classe s'exécutera.
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!