Quels sont les objectifs de classes internes
Je suis à la révision du concept de classes internes en java. tellement loin de ce que j'ai compris et appliqué java les classes internes a un lien ou l'accès à des méthodes et champs de son enveloppe extérieure/classe englobante.
Ma Question:
- Quand faut créer ou définir une sous-classe?
- sont les classes internes considéré comme être appelé un "Helper classes" ?
- Quels sont les indicateurs pour vous de faire un intérieur classe et quelles sont leurs autres fins?
- Check this out: stackoverflow.com/questions/2284396/...
Vous devez vous connecter pour publier un commentaire.
Les classes internes sont les meilleurs pour les fins de regroupement logique des classes qui sont utilisées dans un lieu. Par exemple, si vous souhaitez créer une classe qui n'est utilisé que par classe englobante, alors il n'est pas judicieux de créer un fichier séparé pour que. Au lieu de cela, vous pouvez l'ajouter en tant que "intérieure"
Comme par java tutoriel:
Une utilisation classique pour un intérieur de classe est la mise en œuvre d'un itérateur à l'intérieur d'un conteneur (ArrayList, par exemple - look pour
class Itr
). Tous les conteneurs veut exposer au reste du monde est uneIterator
. Cependant, il a de créer de quelques cas concrets de mise en œuvre de cet itérateur, probablement familier avec le fonctionnement interne du conteneur. À l'aide d'un intérieur de classe se cache la mise en œuvre, tout en le gardant près du conteneur de mise en œuvre. Et d'être intérieure (non statique), il est lié à une instance spécifique de ce conteneur, ce qui permet de l'accès privé conteneur membres.Il y a quelques types de classes internes - non-statique de la classe imbriquée, classes locales et anonyme des classes. Chacun a un peu différente but, donc quand on parle d'un intérieur de classe, vous devez spécifier quel type êtes-vous en train de parler.
En supposant que vous faites référence à des non-statique à l'intérieur des classes, je dirais que la raison de leur utilisation est la même que l'utilisation des classes régulières (à savoir l'abstraction et de diviser le code en unités logiques), mais il n'y a aucune raison de faire usage de classes visibles par le reste du monde. Vous pouvez également faire des classes imbriquées public, bien sûr, dans ce cas, vous le rendrais imbriquée à la place des indépendants dans le but d'exprimer leur relation étroite avec l'extérieur de la classe.
Voir le Java tutoriel pour les principales raisons.
Si par "classe helper" vous voulez dire quelque chose pour usage interne uniquement, alors non, pas nécessairement. Vous voulez peut-être faire quelque chose comme
Ici,
Inner
n'est pas un "helper class" dans le sens que le monde extérieur ne se " pour voir des exemples, mais sa mise en œuvre est entièrement masqué-le monde extérieur ne le sait, il obtient un objet qui implémenteInterestingInterface
.Outer
.En règle générale, objets devrait être conçu pour un seule responsabilité (Très cohérente). En d'autres termes, n'importe quel objet bien conçu, doit effectuer une unique et cohérent de tâches. Ce serait considéré comme une bonne pratique pour la conception orientée objet.
Parfois, cependant, un développeur peut concevoir une classe qui nécessite un séparé spécialisé classe pour travailler. Cette spécialisé classe pourrait être considéré comme un de la classe helper.
Si le helper classe est pas utilisé par une autre classe, alors il serait considéré comme un premier candidat comme un intérieur de la classe
Provoquée par des ncmathsadist ci-dessus, un exemple de l'intérieur de la classe serait dans la mise en œuvre de gestionnaires d'Événements.
Par exemple, dans la conception d'une interface utilisateur graphique (GUI), un développeur peut avoir créé un bouton que effectue un particulier tâche après que l'utilisateur appuie sur elle.
Le bouton aurait besoin d'un gestionnaire d'événement qui écoute pour quand ce bouton est pressé.
Dans ce cas, la création du gestionnaire d'événement pour le bouton comme intérieur de la classe serait meilleures pratiques comme l'intérieur de la classe ne serait pas être utilisé n'importe où d'autre que le bouton spécifique au sein de l'interface de la classe.
Un but de classes internes est d'attacher les auditeurs. Par exemple, supposons que vous avez un
JMenuItem
. Vous pouvez le faire quitter votre application comme indiqué dans ce code:Vous pouvez également une catégorie à avoir accès à l'extérieur de la classe de variables d'état qui est entièrement soumise à la classe. Par exemple, envisager la rédaction d'une couleur simple calculatrice. Il pourrait avoir une zone de texte dans lequel vous saisissez un code hexadécimal. Lorsque vous appuyez sur entrée, vous voulez un Composite pour afficher la couleur. Voici un contour brut de ce que vous pourriez faire.
Si vous trouvez qu'il y a assez de code qui pourrait être fait de mieux en classe en tant que classe offre à nous préciser les stats et
comportement avec les champs et les méthodes, et vous ne voulez pas que cette classe doit être utilisée à l'extérieur de la classe englobante. vous devriez utiliser l'intérieur de la classe.
Ici l'intérieur de la classe est caché du monde extérieur.
Intérieur de la classe peuvent accéder au privé des membres de la classe englobante, ce qui nous donne de l'encapsulation.
Permettez-moi de donner l'exemple..
Supposons que vous voulez réglez la vitesse de cycle et vous avez une règle d'entreprise comme il y a seulement jusqu'à 6 rapports.
Ainsi, vous pouvez créer Intérieure de la Classe de Cycle qui aurait une méthode pour définir la vitesse.
Cette partie de la méthode de validation qui sont vérifiées avant le réglage de la vitesse.comme le cycle est en cours d'exécution...des engins de nombre est inférieur à 6...
meilleur exemple est la gestion des événements de code utilise les classes internes(parfois anonymes inner classes), de créer des événements et les écouteurs sans créer d'Événement distinct de l'Objet et de l'Écouteur d'Événement classes pour votre événement..
C'est une question de style. Tout ce qui peut être fait avec un intérieur de classe peut également être fait comme une série de classes externes. Les classes internes sont particulièrement utiles pour les classes qui sont légers ou étroitement lié à la classe englobante. Par exemple, un comparateur est souvent ces deux choses. Il a besoin de la connaissance intime de la mise en œuvre de la classe, et peut être de seulement quelques lignes de long. Il peut être un candidat idéal comme une classe interne.
Disons que vous avez un type et sa classe, appelée OuterClass, dans un package nommé "com.la coutume.les classes".
Puis ici, c'est la façon dont vous commencez à avoir besoin d'un intérieur de classe ou de classe statique:
Cas 1:
Ce code doit mieux expliquer
Ne vous rappelle closures en Javascript ? 🙂
La plupart des applications de classes imbriquées voir ce qu'il s'applique sur la base de décisions de conception. Ce qui signifie que, tous les cas d'une classe imbriquée peut être remplacé par d'autres modèles.
Mais après avoir dit cela, il est également vrai que l'on peut aussi remplacer le modèle d'héritage avec la composition de motif (et il prend de l'ampleur ces derniers temps) bien qu'un modèle d'héritage est certainement mieux lorsque les dépendances entre les classes est tellement vrai que la composition de l'dépendances entièrement serait laid.
Cas 2:
Prendre un coup d'oeil à ce code:
Ce genre de décision de conception, les cas sont nombreux et toutes les réponses ci-dessus une liste de plusieurs de ces cas. Donc, il ne serait pas faux de penser que cette fonctionnalité a été introduite plus comme un nouveau motif qu'en tant que fonction ou fonctionnalité.
L'intérieur de la classe utilisée pour le regroupement des classes de logique, par exemple, si vous avez de classe B, et cette classe utilisée uniquement à la classe A, il est préférable de mettre de la classe B à l'intérieur de la classe à la classe A, ce qui permettra de donner de la lisibilité et de la réutilisabilité de votre code.
Heureux de code 🙂
Je voudrais juste considérer que c'est juste une caractéristique de la langue. Je recommande de ne pas l'utiliser si nous adoptons des CRUES et à obéir au principe SOLIDE.