programmation Java (école d'ingénieur) · Chapitre 9 · Exercice de TD
Ce que final interdit
Héritage et polymorphisme · niveau 1 (application)
Énoncé
Parmi les déclarations suivantes, lesquelles sont refusées par le compilateur, et pourquoi ?
final class Monnaie {
final String code = "EUR";
}
class Crypto extends Monnaie { }
class Compte {
final void fermer() { }
void crediter(double m) { }
}
class Livret extends Compte {
@Override void fermer() { }
@Override void crediter(double m) { }
}Corrigé
Deux déclarations sont refusées :
Ex11Final.java:9: error: cannot inherit from final Monnaie
class Crypto extends Monnaie { }
^
Ex11Final.java:17: error: fermer() in Livret cannot override fermer() in Compte
@Override void fermer() { }
^
overridden method is final
Crypto ne peut pas hériter d'une classe final, et Livret ne peut pas redéfinir la méthode final fermer. En revanche, l'attribut final String code est parfaitement légal (c'est une constante), et crediter, qui n'est pas final, se redéfinit sans problème.
100 % gratuit
La suite du chapitre est sur Adloun
- 10 autres exercices corrigés dans ce chapitre
- Les 2 QCM du chapitre, le premier sans compte
- Le podcast et la vidéo du chapitre : 2 minutes d'écoute sans compte
- Le tuteur, qui guide pas à pas sans donner la réponse
Sans compte : le cours, le premier QCM et 2 minutes de podcast et de vidéo. Exercices et tuteur : inscription gratuite en 30 secondes, sans carte bancaire.