Introduction aux classes internes
Une classe définie dans une autre classe est appelée une classe interne
Classe interne membre
1..new Vous devez d'abord créer un membre interne class Créez une instance de la classe externe, puis créez un objet de la classe interne via .new
2..this Vous pouvez accéder à toutes les propriétés et méthodes de la classe externe via le nom de classe de la classe externe.this.
public class Test1 { String name = "asnd"; public static void main(String[] args) { Test1 test1 = new Test1(); Inner mInner = test1.new Inner(); mInner.print(); } void show() { System.out.println("show"); } public class Inner { String name = "123"; private void print(){ show(); System.out.println(name);//打印的是123 System.out.println(Test1.this.name);//打印的是asnd } } }
Classe interne anonyme
Une classe sans nom Lorsque la classe est créée, un objet sera également créé.
Pour les classes qui ne doivent être utilisées qu'une seule fois, vous pouvez utiliser des classes internes anonymes
File file = new File("D:/cc.txt") { @Override public boolean delete() { System.out.println("是否删除y/n"); Scanner input = new Scanner(System.in); String str = input.next(); if (str.equals("y")) { return super.delete(); } System.out.println("删除失败"); return false; } }; file.delete(); }
Objets anonymes
Cet objet n'est accessible qu'une seule fois .
new Thread() { @Override public void run() { System.out.println("线程开始!"); try { Thread.sleep(2000); System.out.println("线程结束!"); } catch (Exception e) { e.printStackTrace(); } super.run(); } }.start();
Classe interne statique
1. Les classes internes statiques ne peuvent accéder qu'aux méthodes et variables statiques de la classe externe, mais ne peuvent pas accéder aux méthodes non statiques.
2. Les classes internes statiques peuvent être créées directement sans créer de référence à la classe externe.
Les classes internes anonymes accèdent aux variables locales
Les classes internes doivent être définitives lors de l'accès aux variables locales. Sinon, jdk1.8 l'ajoute par défaut
Lorsque les variables utilisées changent. Vous pouvez utiliser la méthode suivante, ou vous pouvez définir le i suivant comme statique au début
for (int i = 0; i < 5; i++) { final int finali = i; new Thread() { public void run() { System.out.println(finali); }; }.start(); }
Ce qui suit présente les techniques de mise en œuvre des classes internes
public static void main(String[] args) { Lam mLam = new Lam(); //第一种实现的方法 mLam.to(new Ligh() { @Override public void shin() { System.out.println("on的第一种方法"); } }); //第二种实现方法 class MyLam implements Ligh{ @Override public void shin() { System.out.println("第二种"); }} mLam.to(new MyLam()); } } interface Ligh { void shin(); } class Lam { public void to(Ligh ligh) { ligh.shin(); System.out.println("on"); } }
Merci d'avoir lu , j'espère que cela pourra aider tout le monde, merci pour votre soutien à ce site !
Pour des explications plus détaillées et des exemples de classes internes Java (classes anonymes, objets anonymes, classes internes statiques) et des articles connexes, veuillez faire attention au site Web PHP chinois !