fév.
2008
Java Quiz #1
Petit quiz Java : Indiquez deux façons d'interdire le sous-classement d'une classe donnée ?
La réponse est dans le lien ci-dessous, mais ne trichez pas !
Méthode 1
Il suffit de déclarer la classe "final".
Cette méthode est la plus connue, car elle repose sur un mot-clé spécifique du langage.
public final class NonDerivable1 { ... }
Méthode 2
La seconde méthode repose sur la cinématique d'instanciation des classes.
Petit rappel : lors qu'une classe doit être instanciée, son constructeur est invoqué. Mais, avant que le code de ce constructeur ne soit exécuté, le constructeur de la classe parente est invoqué à son tour, et ainsi de suite en remontant la hiérarchie des classes jusqu'à la classe Object.
Voyons maintenant comment cela s'applique à notre Quiz.
Si une classe ne dispose d'aucun constructeur appelable (=visible), il sera impossible d'instancier une hypothétique classe fille, car la cinématique d'instanciation serait interrompue.
Attention toutefois : il ne suffit pas de ne déclarer aucun constructeur dans la classe, car le compilateur en fournirait un automatiquement (le "constructeur par défaut", publique et sans arguments). La technique consiste donc à déclarer un constructeur privé. Ainsi :
- le compilateur n'introduira aucun constructeur publique susceptible d'être appelé par la classe fille lors de son instanciation
- le constructeur étant privé, aucune classe (fille ou non) ne pourra l'appeler : la cinématique d'instanciation sera donc bien interrompue.
public class NonDerivable2 { // Constructeur privé private NonDerivable2() { ... } }
Commentaires
Je dirais :
1) Mettre la classe 'final'
2) Mettre toutes les méthodes de la classe 'final' mais je ne suis pas persuadée que c'est une bonne réponse
Si maintenant on a le droit à des mini-jeux, y'a pas à dire, ton blog va devenir ma référence!
Encore, encore, encore !