Types de retour covariants en Java
En Java, le type de retour d'une méthode remplacée peut être covariant, ce qui signifie qu'elle peut renvoyer un type de retour plus dérivé type que la méthode remplacée. Cependant, cette règle ne s'applique pas aux exceptions levées par une méthode substituée.
Restrictions de levée d'exception dans les méthodes substituées
Le compilateur applique les restrictions suivantes aux méthodes substituées concernant l'exception gestion :
Explication
Ces restrictions garantissent que les sous-classes ne peuvent pas introduire de nouvelles ou exceptions vérifiées plus sévères à l’interface de la méthode remplacée. Ceci est nécessaire pour le polymorphisme, car cela permet au code écrit sur la superclasse de gérer les exceptions de manière appropriée.
Exemple
Considérons l'exemple suivant :
class A { public void foo() throws FileNotFoundException { // ... } } class B extends A { @Override public void foo() throws SQLException { // ERROR: broader checked exception // ... } }
Dans cet exemple, la classe A définit la méthode foo qui lève une FileNotFoundException. La classe B, qui étend A, tente de remplacer foo en déclarant une exception vérifiée plus large, SQLException. Ceci n'est pas autorisé car cela viole les restrictions de lancement d'exceptions.
Justification
Le compilateur applique ces restrictions à :
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!