Je me demandais s'il y a un nombre de fois fini que je peux hériter d'une classe? Ou quels sont les facteurs qui peuvent influencer cela? P>
5 Réponses :
Pour toutes les applications pratiques, les arbres héritables en Java peuvent devenir une taille infinie. P>
Il n'y a pas de limite spécifique dans la spécification. P>
Il y a probablement une limite dépendante de la mise en œuvre, si seulement dans celle que vous êtes limitée par la mémoire disponible (les informations de classe doivent être stockées quelque part après tout). P>
Et si vous atteignez cette limite, votre conception est brisée de toute façon (tout ce qui passe dans les deux chiffres est définitivement une odeur de code). P>
Si une classe est En plus de cela, vous pouvez avoir des arbres infiniment héritage. Vous pouvez également infiniment finale code>, vous ne pouvez pas l'hériter. p>
implémenter code> de nombreuses classes d'interface aussi. P>
La mise en œuvre de nombreuses interfaces permet à de grands arbres d'héritage, cependant, pas pour les profonds.
En fait, non - voir la réponse de @ Pinichi.
@ Joachim Sauer, vrai, je faisais simplement élaborer que vous pouvez tous les deux devenir infiniment profond dans l'héritage et l'infiniment large aussi ....
Encore une fois, non plus vrai. Le même article indique que la limite de largeur d'héritage est (au plus) 65535 - en pratique, cela pourrait être encore moins. Bien sûr, aucun de nous ne sera même proche de ces limites dans les projets réels de la vie - mais toujours, il y a des limites.
@ Péter Török, j'ai lu l'article et vous êtes effectivement correct. "Pratiquement" (entre parenthèses), c'est possible cependant. Je me demande si j'ajoute 65536e classe, le compilateur me bomberait-il?
lire Ce (c'est amusant)
The system is out of resources. Consult the following stack trace for details. java.lang.StackOverflowError
+1 Pour des recherches intéressantes, la réponse étant ~ 60 niveaux de profondeur pour la compilation et la course i> pour ceux qui veulent connaître la réponse avant de cliquer sur le lien
Expérience intéressante, mais @jonathans Réponse est toujours vrai: pour toutes les applications pratiques, il n'y a pas de limite.
Il n'y a pas de limite spécifiée. Pour toutes les raisons pratiques, il est infini. P>
J'espère que vous n'atteignez jamais une telle limite (si elle existe) :)
Pourquoi y a-t-il une demande de la fermer? N'est-ce pas une vraie question?