Maison >Java >javaDidacticiel >Pourquoi les champs et méthodes statiques ne sont-ils pas autorisés dans les classes internes d'instance en Java ?
Statique Champs et méthodes dans les classes internes : restrictions et raisons
Classes internes, également appelées classes imbriquées, sont des classes déclarées dans une autre classe. Elles sont classées soit en classes internes d'instance, soit en classes internes statiques.
Classes internes d'instance
Les classes internes d'instance, comme leur nom l'indique, sont associées à des instances de l'instance englobante. classe. Ils ont accès aux variables d'instance et aux méthodes de la classe englobante via le mot-clé this. Cependant, les champs et méthodes statiques ne sont pas autorisés dans les classes internes d'instance.
Classes internes statiques
Les classes internes statiques, en revanche, n'ont pas accès aux englobant les variables ou méthodes d’instance de la classe. Ils se comportent comme des classes normales imbriquées dans la classe englobante et peuvent déclarer des champs et des méthodes statiques.
Restrictions sur les champs et méthodes statiques dans les classes internes
Java interdit les champs statiques et méthodes dans les classes internes d'instance car :
Considérations sur la mise en œuvre
Techniquement, la restriction sur les champs statiques et les méthodes des classes internes sont appliquées par la machine virtuelle Java (JVM). La JVM attribue un identifiant d'exécution à chaque instance de classe interne, ce qui les rend uniques par instance de classe englobante. En conséquence, le compilateur signale toute tentative de déclaration de champs ou de méthodes statiques dans des classes internes, car la JVM ne peut pas faire la distinction entre les membres au niveau de la classe et au niveau de l'instance au sein d'une classe interne.
En résumé, Java interdit les champs et les méthodes statiques dans les classes internes d'instance afin de maintenir une distinction claire entre le comportement à l'échelle de la classe et celui spécifique à l'instance, de garantir la sécurité des threads et de s'aligner sur les principes de conception du langage qui séparent les membres liés à l'instance et les membres statiques. .
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!