Maison > Java > javaDidacticiel > Les méthodes statiques héritent-elles en Java ?

Les méthodes statiques héritent-elles en Java ?

DDD
Libérer: 2024-12-11 19:28:10
original
458 Les gens l'ont consulté

Do Static Methods Inherit in Java?

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();
    }
}
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal