Bonjour,
Je me pose une question toute bête, qu'elles sont les raisons d'utilisé une classe interne ?
Car je trouve, surement à tord, que cela alourdit grandement la compréhension du code.
Merci d'avance
Bonjour,
Je me pose une question toute bête, qu'elles sont les raisons d'utilisé une classe interne ?
Car je trouve, surement à tord, que cela alourdit grandement la compréhension du code.
Merci d'avance
Bonsoir,
Je te l'accorde sa allourdi et tu as peut être vu sur wiki et forum que l'avantage c'est que la classe interne à un accès total aux attributs de la classe au dessus.
Pour ma part je peux te dire que j'utilise ce mécanisme en graphique. Par exemple dans l'un de mes projets je faisais des cartes, donc j'ai fais une classe carte et une classe interne pour l'intérieur de la carte ou je changeais l'image.
Donc je te dirais que c'est bien quand les 2 classes sont très très liées. Au lieu d'avoir une classe CarteJeuet une classe InterieurCarte j'ai une seule classe CarteJeu.
Mais c'est une vision dans le cadre d'une utilisation, je n'ai pas une théorie précise et si sa se trouve mon exemple à peut être mieux comme solution mais à l'époque sa fonctionnait .
L'Etat est bien administré quand l'escalier de l'école est usé et que l'herbe croît sur celui du tribunal.
Modérateur BI
Personnellement j'utilise assez souvent les classes internes privées. Ça m'évite d'exposer des classes qui ne servent que pour la bidouille interne d'une autre classe.
Mais bon, ça a aussi ses limites. Au-delà d'une certaine complexité, il faut éclater en plusieurs classes distinctes.
Sinon, l'accès direct aux méthodes et membres internes de la classe englobante, est assez pratique pour garder un code concis. Là c'est le contraire d'alourdir, en fait.
Je pense notamment à l'implémentation d'une Collection, il faut son Iterator avec, et cet Iterator n'est pas utile en dehors de la classe qui le déclare.
N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
Je dirais que c'est assez utilisé quand tu fais du graphique, pour faire des ecouteurs, sorter ou autre.
une classe interne permet aussi d'exprimer un couplage fort.
tu as deux principes antagonistes: séparer les fonctions (chaque classe correspond à un comportement) ... mais les deux codes sont intimement liés et interdépendants.
nota: java différencie les "inner classes" (classe membre d'instance) et les "nested" classes (types statiques enchassés)
Il y a bien sûr le cas des partages de données ... mais voici un exemple plus surprenant de type enchassé:
bon on peut discuter de la pertinence de la chose ... mais la classe Produit "utilise" ExceptionStock .... qui utilise "Produit"!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 public abstract class Produit { public static class ExceptionStock { Produit produitManquant ; // etc ... } //.... public void achat(int nb) throws ExceptionStock { } }
Les deux classes sont liées (on ne peut compiler l'une sans compiler l'autre) on peut les mettre dans deux codes à part ou dans une classe enchassée.
Je ne dis pas que la classe enchassée s'impose ici, mais elle a aussi quelques aspects pratiques (on traite des Produit.ExceptionStock).
J'ai des principes: je peux toujours trouver une bonne raison pour les contredire .... mais j'ai des principes!
(mon excellent bouquin sur Java : https://eska-publishing.com/fr/livre...822407076.html)
bjr moi j'utilise les classes internes pour le bricolage de mon application
que j'ai besoin des traitements en plus je créer une classe interne dédiée ;
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager