0
votes

Pourquoi pouvez-vous créer une instance de classe nichée statique?

À 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?


4 commentaires

Le statique 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é signifie (à peu près) "Impossible de faire une instance" ... pas statique .


Pour certains fond, voir la section Pourquoi cette étrangeté? dans Stackoverflow.com/a/24953859/823393


3 Réponses :


0
votes

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();


2 commentaires

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?



2
votes

À ma connaissance, normalement en Java, quelque chose de statique signifie que vous ne pouvez pas en créer une instance.

Ce n'est pas correct. statique est plus "n'appartient à aucune instance spécifique, mais au type / classe elle-même" .

Pensez à une classe statique dans le contexte de la classe enfermante . Une classe statique est un membre statique , 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.


0 commentaires

0
votes

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: xxx

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.

espère qu'il aide !!!


0 commentaires