Dans des circonstances normales, les classes de modification statique ne peuvent pas être utilisées. Si vous devez utiliser statique pour modifier la classe, statique modifie généralement la classe interne anonyme.
Créez une autre classe dans une classe, appelée la classe intérieure du membre. Cette classe interne de membre peut être statique (en utilisant une modification des mots clés statique) ou non statique. Parce que les classes internes statiques ont diverses restrictions lors de leur définition et de leur utilisation. Donc peu de choses sont utilisées dans le travail réel.
Au cours du processus de développement, les classes internes les plus courantes sont utilisées dans des classes internes qui sont des membres non stadiques. Cependant, dans des cas spécifiques, des classes internes statiques peuvent également jouer leur rôle unique.
1. Objectif de l'utilisation de classes internes statiques.
Lorsque vous définissez une classe intérieure, vous pouvez le préfixer avec un modificateur d'autorisation statique. À l'heure actuelle, cette classe intérieure devient une classe intérieure statique. Cependant, pour diverses raisons, telles que les restrictions d'utilisation et d'autres facteurs (les restrictions d'utilisation spécifiques sont expliquées en détail dans le contenu suivant), il n'y en a pas beaucoup dans le travail réel. Mais cela ne signifie pas qu'il n'a aucune valeur. Dans certains cas particuliers, il n'est vraiment pas possible de manquer cette classe intérieure statique. Par exemple, lors de la réalisation de tests de programme de code, si une méthode principale est définie dans chaque fichier source Java (la méthode principale est l'entrée d'une certaine application et doit l'avoir), alors beaucoup de code supplémentaire apparaîtra. Et la chose la plus importante est que le code de ce programme principal n'est qu'un formulaire pour les fichiers Java, et il ne nécessite pas cette méthode principale elle-même. Mais il est absolument impossible de se passer de cette méthode principale. Dans ce cas, la méthode principale peut être écrite dans la classe intérieure statique, de sorte qu'il n'est pas nécessaire de définir une méthode principale similaire pour chaque fichier source Java. Ceci est très utile pour les tests de code. Dans un développement d'applications moyen et vaste, il s'agit d'un moyen technique couramment utilisé. Pour cette raison, bien que cette classe interne statique ne soit pas très couramment utilisée, les développeurs de programmes doivent également le maîtriser. Peut-être qu'à un moment critique, il peut toujours jouer un rôle énorme.
classe publique MainInStaticClass {static class Main {static void main () {// Écrivez la méthode principale d'une classe intérieure statique, il n'est donc pas nécessaire d'avoir ce type de méthode principale pour chaque fichier source new (String [] args) {new MainInstaticClass (). print () {System.out.println ("Main dans la classe intérieure statique");}} classe publique TestMain {public static void main (String [] args) {// todo a auto-généré la méthode Stub // new MainInstaticClass (). print (); maininstaticclass.main.main (); new MaininstaticClass.main ();}2. Limites sur l'utilisation des classes internes statiques.
La définition d'une classe intérieure en tant que classe statique est essentiellement la même que la définition d'autres classes que les classes statiques, et les règles de référence sont fondamentalement les mêmes. Cependant, les détails sont encore très différents. Plus précisément, il existe principalement les domaines suivants pour attirer l'attention de tous les développeurs de programmes.
L'une est la définition des membres statiques (y compris les variables statiques et les membres statiques). De manière générale, si une classe interne n'est pas définie comme une classe intérieure statique, elle ne peut pas être définie comme une variable de membre statique et une méthode de membre statique lors de la définition des variables de membre ou des méthodes membre. Autrement dit, les membres statiques ne peuvent pas être déclarés dans des classes intérieures non statiques. Par exemple, un âge de classe interne est désormais défini dans une classe étudiante. Si cette classe n'est pas modifiée avec le mot-clé statique, c'est-à-dire qu'elle n'est pas définie comme une classe statique, elle n'est pas autorisée à modifier une certaine méthode de membre ou une variable membre dans cette classe interne. Il ne pourra pas passer lors de la compilation. Par conséquent, les développeurs de programmes doivent noter que seuls en modifiant une classe intérieure en tant que classe statique peuvent être définies des variables de membres statiques et des membres dans cette classe. Ceci est une fonctionnalité des classes intérieures statiques. C'est précisément pour cette raison que parfois de nombreuses tâches ne peuvent pas être effectuées sans cette classe interne statique. Ou il est nécessaire de contourner un grand cercle pour répondre aux besoins d'un certain utilisateur. C'est également une raison importante pour laquelle les internes statiques existent.
Deuxièmement, il y a des restrictions relativement importantes sur les citations des membres. Les classes intérieures générales non statiques peuvent accéder aux variables des membres et aux méthodes membres dans les classes externes à volonté. Même si ces méthodes de membres sont modifiées en tant que privés (variables ou méthodes de membres privés), leurs classes intérieures non statiques sont accessibles à volonté. Il s'agit d'un privilège de classes intérieures non statiques. Parce que dans d'autres classes, les variables des membres ou les méthodes définies comme privées sont inaccessibles. Cependant, si une classe interne est définie comme statique, il y aura de nombreuses restrictions lors de l'utilisation de méthodes membre ou de variables membres de la classe extérieure. Par exemple, les membres non statiques des classes externes (y compris les variables membres et les méthodes membres) ne sont pas accessibles à partir d'objets de classe interne statique. Qu'est-ce que cela signifie? Si deux variables sont définies dans la classe externe, l'une est une variable non statique et l'autre est une variable statique. Ensuite, dans une classe interne statique, que ce soit à l'intérieur d'une méthode membre ou ailleurs, il ne peut faire référence que des variables statiques dans la classe extérieure et ne peut pas accéder à des variables non statiques. Dans les classes internes statiques, les méthodes statiques peuvent être définies (et seules les méthodes statiques peuvent être définies dans des classes internes statiques), et les membres de la classe externe peuvent être référencés dans des méthodes statiques. Cependant, peu importe où la classe intérieure est référencée, il y a une chose en commun, c'est-à-dire qu'elle ne peut faire référence que des méthodes de membres statiques ou des variables membres dans la classe extérieure. Pour les variables des membres non statiques et les méthodes des membres, ils sont inaccessibles dans les classes internes statiques. Il s'agit de la limite d'utilisation maximale pour les classes intérieures statiques. Il n'y a pas une telle restriction dans les classes intérieures non statiques ordinaires. C'est précisément cette raison que les classes internes statiques ne sont utilisées que dans certaines occasions spécifiques. Sa gamme d'applications est beaucoup moins étendue que celle des classes internes non statiques.
Troisièmement, lors de la création d'une classe intérieure statique, il n'est pas nécessaire de lier les instances de la classe intérieure statique aux instances de la classe externe.
D'une manière générale, lors de la création d'une classe interne de membre dans une classe, il y a une disposition obligatoire, c'est-à-dire que les cas de classe intérieure doivent être liés à des cas de classe extérieure. C'est-à-dire qu'avant de créer une classe intérieure, vous devez d'abord utiliser le nouveau mot-clé dans la classe extérieure pour créer un objet de cette classe intérieure. Dans ce cas, si un objet de classe interne est initialisé à partir de la classe externe, l'objet de classe interne sera lié à l'objet de classe externe. En d'autres termes, des objets de classes intérieures non statiques ordinaires sont attachées à des objets externes. Cependant, si les développeurs membres créent des classes intérieures statiques, c'est une autre question. D'une manière générale, lorsqu'un programmeur définit une classe intérieure statique, il n'a pas besoin de définir les instances de la classe externe. C'est-à-dire que pour définir une classe intérieure statique dans une classe externe, il n'est pas nécessaire d'utiliser le mot-clé nouveau pour créer une instance de la classe intérieure. Autrement dit, lors de la création d'un objet interne d'une classe statique, des objets de sa classe externe ne sont pas nécessaires.
newMainInStaticClass.Main();
Pour la raison spécifique, les développeurs de programmes n'ont généralement pas besoin de comprendre si profondément, ils ont juste besoin de se rappeler qu'il y a cette règle. Lorsque vous définissez des classes internes statiques, ne faites jamais l'erreur d'ajouter de l'argent supplémentaire.
D'après l'analyse ci-dessus, nous pouvons voir que les classes internes statiques sont encore très différentes des classes intérieures non statiques. Généralement, les développeurs de programmes peuvent comprendre que les objets de classe interne non statiques enregistrent implicitement une référence dans la classe extérieure pour pointer de l'objet de classe extérieure qui l'a créé. Quelle que soit cette compréhension, les développeurs de programmes doivent garder à l'esprit les différences entre les classes intérieures statiques et les classes intérieures non statiques. Par exemple, que les méthodes de membres statiques et les variables des membres puissent être créées (les classes internes statiques peuvent créer des membres statiques au lieu des classes internes statiques), les restrictions à l'accès aux membres des classes externes (les classes internes statiques ne peuvent accéder aux variables des membres statiques et aux méthodes des membres dans des classes externes au lieu des classes statiques, des variantes de membres des membres externes statiques ou non statiques). Ces deux différences sont la plus grande différence entre les classes internes statiques et les classes extérieures non statiques, et sont également la raison pour laquelle des classes internes statiques existent. Après avoir compris cette différence, les développeurs de programmes doivent également savoir dans quelles circonstances devraient-elles utiliser des classes intérieures statiques. Par exemple, lors des tests de programme, afin d'éviter d'écrire le code de méthode principal dans chaque fichier source Java, la méthode principale peut être écrite dans une classe interne statique pour réduire la quantité de code écrite et rendre le code plus concis.
En bref, les classes intérieures statiques sont une classe très spéciale dans la langue Java, qui est très différente des classes statiques ordinaires et des classes intérieures non statiques. En tant que développeur de programme, il est nécessaire de connaître les différences entre eux et d'adopter les bonnes classes où ils sont dans un vrai travail. Cependant, en général, la fréquence des classes internes statiques n'est pas très élevée. Cependant, à certaines occasions, si cette classe statique interne n'est pas disponible, elle peut avoir un effet négatif de la moitié du résultat avec deux fois l'effort.
3. Instanciation
Après avoir lu le contenu ci-dessus, je l'ai testé dans son ensemble:
Tout d'abord, tout le monde doit comprendre que les classes internes statiques ne dépendent tout simplement pas des classes externes, et les variables et méthodes à l'intérieur ne sont pas nécessairement statiques. Parlons du code ci-dessous:
Test de classe publique {public static void main (string [] args) {myinnerstaticclass inner = new MyInnerstaticClass (); inner.a = 10; inner.b = "ABC"; System.out.println (inner.a + "" + inner.b);} classe statique MyInnerstaticClass {int a; String b;}} Test de classe publique {public static void main (string [] args) {myinnerstaticclass inner = new MyInnerstaticClass (); inner.a = 10; inner.b = "ABC"; System.out.println (inner.a + "" + inner.b);} classe statique MyInnerstaticClass {int a; String b;}}Le code ci-dessus instancie la classe anonyme statique avec un nouveau, entrez 10 ABC après l'exécution, correct!
Résumer
Ce qui précède est toute l'explication détaillée de la classe statique en Java dans cet article. J'espère que ce sera utile à tout le monde. Les amis intéressés peuvent continuer à se référer à d'autres sujets connexes sur ce site. S'il y a des lacunes, veuillez laisser un message pour le signaler. Merci vos amis pour votre soutien pour ce site!