Aperçu
Apprenant récemment Python et a constaté que Python prend en charge plus d'héritage, ce qui me rappelle ce mécanisme mis en œuvre par la classe interne. Cet article ne concerne pas la façon de réaliser plus d'héritage à travers la classe interne, mais de résumer les types et les méthodes d'utilisation de la classe interne.
La classe interne Java est divisée en:
La classe interne est utilisée dans le code source Android en grande quantité.
Ensuite, introduisez respectivement ces classes internes.
Classe interne non statique
Lorsqu'une classe est un membre non statique d'une autre classe, cette classe est une classe interne non statique.
L'exemple de code de création d'une classe interne non statique est la suivante:
classe Outclass {class innerclass {}}
Lorsque nous avons compilé Javac, nous avons constaté que deux fichiers .class ont été générés: Outclass.class et surclasse $ innerclass.class. Comme indiqué dans la figure ci-dessous:
Classes internes de la méthode non statique de la classe externe
Il est facile d'accéder à la classe interne dans la classe externe. L'exemple de code est le suivant:
Classe publique Outclass {private static int a = 0; public void makeInner () {InnerClass = new InnerClass (); .MakeInner ();} classe InnerClass {public void Seeouter () {System.out.println (a);Les résultats sont les suivants:
0
Classes internes de la méthode statique de la classe externe
Il est relativement simple d'accéder à la classe interne dans la classe externe.
Outclass.innerclass innerclass = new Outclass ().
En d'autres termes, la classe interne non statique doit d'abord être instanciée, puis des classes internes instanciées sont utilisées via les objets de classe externe. L'exemple de code est le suivant:
Classe publique Outclass {private static int a = 0; public void makeInner () {InnerClass = new InnerClass (); .InnerClass InnerClass = new OutClass ().
Résultats de l'exécution:
01
Cette référence dans la classe interne
Les classes ordinaires peuvent référencer les objets actuels avec cela, ainsi que les classes internes. Mais que se passe-t-il si la classe interne veut citer l'objet actuel de la classe externe? Vous pouvez utiliser les moyens suivants:
Nom externe.
L'exemple de code est le suivant:
Classe publique Outclass {private static int a = 0; public void makeInner () {InnerClass = new InnerClass (); .InnerClass InnerClass = new OutClass (). }}}
Classe interne statique
La classe interne non statique est introduite ci-dessus.
La classe interne statique est le rôle d'un membre statique dans la classe externe.
Notez que la classe externe ne peut pas être modifiée à l'aide du modificateur statique.
L'exemple de code est le suivant:
classe Outclass {classe statique innerclass {}}
Compiler avec la commande javac, vous pouvez voir qu'il y a deux fichiers .class, comme indiqué dans la figure ci-dessous:
Classes internes de classes internes statiques à partir de la méthode non statique de la classe externe
Visiter des classes internes statiques à partir de classes externes est la même que les classes internes non statiques dans les catégories externes. Cependant, il convient de noter qu'à ce moment, la classe interne statique ne peut accéder qu'aux membres statiques de la classe externe et que les membres non statiques ne sont pas accessibles.
L'exemple de code est le suivant:
Classe publique Outclass {private static int a = 0; privé int b = 1; Outclass oclass = new OutClass (); oclass.makeInner ();} classe statique InnerClass {public void Seeouter () {System.out.println (this); println (b);}}}
Les résultats de l'exécution sont les suivants:
Surclassez $ innerclass @ 79A3400
Classification interne des classes internes statiques à partir de la méthode statique externe
Avis:
Parce que la classe interne statique est un membre statique de la classe externe, et les membres statiques sont liés à la classe, pas à l'objet d'objets instanciés. Par conséquent, les classes internes dans la méthode statique de la classe externe n'ont pas besoin d'instancier d'abord la classe externe.
L'exemple de code est le suivant:
Classe publique Outclass {private static int a = 0; privé int b = 1; Outclass oclass = new Outclass (); oclass.makeInner (); this); System.out.println (a);
Classe interne anonyme
La classe interne anonyme inonde dans le développement d'applications Android.
La classe interne anonyme peut savoir qu'il s'agit d'une classe interne qui n'a pas de catégorie, qui est généralement utilisée pour simplifier le code.
Je crois que les étudiants qui écrivent Java utilisent les fils. L'exemple de code est le suivant:
Classe publique Outclass {public void testAnonyMousClass () {thread t = new Thread (new Runnable () {@Override public void run () {for (int i = 0; i <10; i ++) {System.out.println (i); essayez {Thread.Sleep (500);} catch (InterruptedException e) {e.printStackTrace ();}}); .
Les résultats de l'exécution sont les suivants:
Un autre fil est en cours d'exécution ...