Introduction aux classes internes
Une classe définie dans une autre classe est appelée une classe intérieure
Classe interne membre
1..NEW pour créer une classe interne d'un membre, vous devez d'abord créer une instance de la classe externe, puis créer un objet de la classe interne via .new
2..Ce vous pouvez accéder à toutes les propriétés et méthodes de classes externes via le nom de classe. Cette classe externe.
classe publique test1 {string name = "asnd"; public static void main (String [] args) {test1 test1 = new test1 (); Minner intérieur = test1.new inner (); Minner.print (); } void show () {System.out.println ("show"); } classe publique inner {string name = "123"; private void print () {show (); System.out.println (name); // imprime 123 System.out.println (test1.this.name); // imprimer asnd}}}Classe interne anonyme
Une classe sans nom créera également un objet lors de la création d'une classe.
Vous n'avez besoin d'utiliser la classe qu'une seule fois pour utiliser des classes internes anonymes
File file = new File ("d: /cc.txt") {@Override public boolean delete () {System.out.println ("ne supprime pas y / n"); Entrée du scanner = nouveau scanner (System.in); String str = input.next (); if (str.equals ("y")) {return super.delete (); } System.out.println ("Delete a échoué"); retourne false; }}; file.delete (); }Objet anonyme
L'objet ne doit être accessible qu'une seule fois.
nouveau thread () {@Override public void run () {System.out.println ("thread start!"); essayez {thread.sleep (2000); System.out.println ("Tire End!"); } catch (exception e) {e.printStackTrace (); } super.run (); } }.commencer();Classe intérieure statique
1. Les classes intérieures statiques ne peuvent accéder qu'à des méthodes et variables statiques des classes externes et ne peuvent pas accéder non statiques.
2. Les classes internes statiques peuvent être créées directement sans créer de références aux classes externes.
Classe interne anonyme Accès aux variables locales
Classe interne Accès aux variables locales doit être définitive. S'il n'est pas ajouté, JDK1.8 sera ajouté par défaut. Lorsque la variable utilisée est modifiée, la méthode suivante peut être utilisée, ou ce qui suit, je peux être défini comme statique au début.
pour (int i = 0; i <5; i ++) {final int finali = i; nouveau thread () {public void run () {System.out.println (fini); }; }.commencer(); }Ce qui suit est une introduction aux compétences de mise en œuvre des classes internes
public static void main (String [] args) {lam mlam = new Lam (); // la première méthode d'implémentation mlam.to (new Light () {@Override public void shin () {System.out.println ("On's First Method");}}); // La deuxième méthode de mise en œuvre de la classe Mylam implémente Light {@Override public void shin () {System.out.println ("second"); }} mlam.to (new mylam ()); }} Interface Light {void shin ();} class Lam {public void to (Ligh Ligh) {Ligh.shin (); System.out.println ("ON"); }}Merci d'avoir lu, j'espère que cela peut vous aider. Merci pour votre soutien à ce site!