À ma connaissance, normalement en Java, quelque chose de statique signifie que vous ne pouvez pas en créer une instance. Mais si tel est le cas, pourquoi pouvez-vous créer une instance d'une classe imbriquée statique? Cela ne vaingait-il pas le but de quelque chose d'être statique? p>
3 Réponses :
quelque chose qui est statique signifie que vous ne pouvez pas en créer une instance. p>
Ce n'est pas vrai. Non seulement vous ne pouvez pas créer des instances de champs statiques, vous ne pouvez pas créer des instances de champs non statiques, car il s'agit d'un champ em>, pas d'une classe. P>
statique code> signifie simplement que vous n'avez pas besoin de créer une instance de la classe environnante pour y accéder.
statique code> Les membres appartiennent à la classe elle-même em>, au lieu d'instances de cette classe. p>
avec cette définition, les classes statiques ont le sens total. P>
Les instances de classes statiques peuvent être créées sans créer des instances de leur classe extérieure: p>
xxx pré> tandis que des cas de classes intérieures non statiques ne peuvent pas: P>
class Inner { class Outer { } } Inner inner = new Inner(); // I have to create this instance, otherwise it wouldn't compile Inner.Outer outer = inner.new Outer();
Bonjour merci. Pouvez-vous donner un exemple dans quelles situations statiques classes intérieures aurait plus de sens et dans les situations non statiques aurait plus de sens?
@APPLJUICE Je ne peux pas penser à une situation au sommet de ma tête. Cette aide?
À ma connaissance, normalement en Java, quelque chose de statique signifie que vous ne pouvez pas en créer une instance. p> blockQuote>
Ce n'est pas correct.
statique code> est plus "n'appartient à aucune instance spécifique, mais au type / classe elle-même" em>. p>
Pensez à une classe statique dans le contexte de la classe enfermante em>. Une classe statique est un membre code> statique code>, ce qui signifie que la classe imbriquée n'est attachée à aucune instance particulière de la classe jointe.
L'implication est que vous pouvez créer une instance de la classe imbriquée sans avoir à créer d'une instance de la classe externe en premier. P>
Imaginez une situation où vous avez une méthode dans votre classe statique imbriquée et que vous souhaitez appeler cette méthode.
Reportez-vous à cet extrait ci-dessous: P> Comment accéderez-vous à l'écran () de la classe imbriquée statique sans en créer un objet.
Java permet de créer une instance de classe imbriquée statique afin que nous puissions accéder aux méthodes définies au sein de cette classe. P> espère qu'il aide !!! p> p>
Le
statique code> de classes imbriquées statiques fait vraiment référence à leur comportement dans leurs classes parents entourant. Évidemment, vous pouvez créer une instance, mais la classe elle-même se comporte comme membre de niveau supérieur de la classe mère et ne peut se référer à des champs statiques.
statique vraiment signifie qu'il n'appartient à aucune instance. C'est vrai des méthodes, des variables et des classes. Dans ce dernier cas, cela signifie spécifiquement que vous pouvez créer cette classe imbriquée sans créer ou faire référence à une instance de sa classe jointe.
Résumé CODE> signifie (à peu près) "Impossible de faire une instance" ... pas
statique code>.
Pour certains fond, voir la section Pourquoi cette étrangeté? I> dans Stackoverflow.com/a/24953859/823393