Heim  >  Artikel  >  Java  >  Detaillierte Erklärung und Beispiele für interne Java-Klassen (anonyme Klassen, anonyme Objekte, statische interne Klassen)

Detaillierte Erklärung und Beispiele für interne Java-Klassen (anonyme Klassen, anonyme Objekte, statische interne Klassen)

高洛峰
高洛峰Original
2017-01-11 15:38:451393Durchsuche

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn