Einführung in innere Klassen
Eine in einer anderen Klasse definierte Klasse wird als innere Klasse bezeichnet
Member-Innenklasse
1..neu Sie müssen zuerst ein inneres Mitglied erstellen Klasse Erstellen Sie eine Instanz der äußeren Klasse und erstellen Sie dann über .new ein Objekt der inneren Klasse.
2..this Sie können über den Klassennamen auf alle Eigenschaften und Methoden der äußeren Klasse zugreifen die äußere Klasse.dies.
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 } } }
Anonyme innere Klasse
Eine Klasse ohne Namen. Wenn die Klasse erstellt wird, wird auch ein Objekt erstellt.
Für Klassen, die nur einmal verwendet werden müssen, können Sie anonyme innere Klassen verwenden
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(); }
Anonyme Objekte
Auf dieses Objekt muss nur einmal zugegriffen werden .
new Thread() { @Override public void run() { System.out.println("线程开始!"); try { Thread.sleep(2000); System.out.println("线程结束!"); } catch (Exception e) { e.printStackTrace(); } super.run(); } }.start();
Statische innere Klasse
1. Statische innere Klassen können nur auf statische Methoden und Variablen der äußeren Klasse zugreifen, nicht jedoch auf nicht statische.
2. Statische innere Klassen können direkt erstellt werden, ohne einen Verweis auf die äußere Klasse zu erstellen.
Anonyme innere Klassen greifen auf lokale Variablen zu
Innere Klassen müssen beim Zugriff auf lokale Variablen endgültig sein. Wenn nicht, fügt jdk1.8 sie standardmäßig hinzu.
Wenn sich die verwendeten Variablen ändern Sie können die folgende Methode verwenden oder das folgende i zu Beginn als statisch festlegen
for (int i = 0; i < 5; i++) { final int finali = i; new Thread() { public void run() { System.out.println(finali); }; }.start(); }
Im Folgenden werden die Implementierungstechniken interner Klassen vorgestellt
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"); } }
Vielen Dank fürs Lesen. Ich hoffe, es kann allen helfen. Vielen Dank für Ihre Unterstützung dieser Website!
Ausführlichere Erklärungen und Beispiele für interne Java-Klassen (anonyme Klassen, anonyme Objekte, statische interne Klassen) und verwandte Artikel finden Sie auf der chinesischen PHP-Website!