Votre meilleure référence ici est le point 19 de l'excellent livre de Joshua Bloch "Effective Java", intitulé "Design and document for inheritance or else prohibit it". (C'est le point 17 dans la deuxième édition et le point 15 dans la première édition). Vous devriez vraiment le lire, mais je vais résumer.
L'interaction des classes héritées avec leurs parents peut être surprenante et imprévisible si l'ancêtre n'a pas été conçu pour être hérité.
Les cours devraient donc être de deux types :
-
Classes conçu pour être **étendu **, et avec une documentation suffisante pour décrire comment le faire
-
Classes marqué **final **
Si vous écrivez du code purement interne, cela peut être un peu excessif. Toutefois, l'effort supplémentaire que représente l'ajout de cinq caractères à un fichier de classe est très faible. Si vous écrivez uniquement pour une consommation interne, un futur codeur pourra toujours supprimer le "final" - vous pouvez le considérer comme un avertissement disant "cette classe n'a pas été conçue avec l'héritage en tête".
1 votes
Pédantisme : Le constructeur par défaut est celui généré pour vous par le compilateur Java si vous n'en écrivez pas explicitement un dans votre code. Vous voulez dire le constructeur sans argument.
0 votes
N'est-ce pas le "constructeur implicite par défaut" ?
2 votes
" Vous n'êtes pas obligé de fournir des constructeurs pour votre classe, mais vous devez faire attention en le faisant. Le compilateur fournit automatiquement un constructeur par défaut, sans argument, pour toute classe sans constructeur." java.sun.com/docs/books/tutorial/java/javaOO/constructeurs.html - John Topley