Maison >Java >javaDidacticiel >Les méthodes Java remplacées peuvent-elles avoir différents types de retour ?

Les méthodes Java remplacées peuvent-elles avoir différents types de retour ?

Linda Hamilton
Linda Hamiltonoriginal
2024-12-13 10:39:12286parcourir

Can Java Overridden Methods Have Different Return Types?

Les méthodes remplacées peuvent-elles avoir différents types de retour ?

Les méthodes remplacées en Java ont la flexibilité de varier dans les types de retour, suivant le principe des types de retour covariants. Cela signifie qu'une méthode de substitution peut renvoyer un type de données plus spécifique que celui déclaré dans la méthode de substitution.

Pour illustrer, considérons l'exemple suivant :

class ShapeBuilder {
    ...
    public Shape build() {
        ....
    }
}

class CircleBuilder extends ShapeBuilder{
    ...
    @Override
    public Circle build() {
        ....
    }
}

Dans ce scénario, bien que ShapeBuilder La méthode build() renvoie un objet Shape, la méthode build() de substitution de CircleBuilder renvoie un objet Circle, qui est un type plus spécialisé qui étend Shape. Ceci est autorisé car Circle peut être attribué à Shape.

Les types de retour covariants respectent la section 8.4.5 de la spécification du langage Java, qui décrit les règles suivantes :

  1. Les méthodes Void peuvent être remplacé uniquement par les méthodes void.
  2. Les types de retour primitifs doivent rester les mêmes dans overrided méthodes.
  3. Pour les types de référence :

    • Le type de retour de la méthode de remplacement peut être un sous-type du type de retour de la méthode remplacée.
    • Le retour Le type peut être attribuable au type de retour de la méthode remplacée via une conversion non vérifiée.
    • Les types de retour peuvent être effacés de la même manière. type.

Avant Java 5, Java imposait des types de retour invariants, exigeant que le type de retour des méthodes remplacées corresponde précisément à la méthode remplacée.

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!

Déclaration:
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