Heim  >  Artikel  >  Java  >  Zusammenfassung und gemeinsame Nutzung anonymer innerer Klassen in Java

Zusammenfassung und gemeinsame Nutzung anonymer innerer Klassen in Java

黄舟
黄舟Original
2017-09-25 10:16:541543Durchsuche

Dieser Artikel stellt hauptsächlich die relevanten Informationen zur Zusammenfassung anonymer interner Klassen in Java vor. Ich hoffe, dieser Artikel kann allen Freunden in Not helfen.

Zusammenfassung anonymer interner Klassen in Java

Anonyme innere Klassen sind auch innere Klassen ohne Namen

Da sie keine Namen haben, können anonyme innere Klassen nur einmal verwendet werden. Sie werden normalerweise verwendet, um das Schreiben von Code zu vereinfachen

Aber es gibt eine Voraussetzung für die Verwendung anonymer innerer Klassen: Sie müssen eine übergeordnete Klasse erben oder eine Schnittstelle implementieren

Beispiel 1: Verwenden Sie keine anonymen inneren Klassen, um abstrakte Methoden zu implementieren


abstract class Person { 
  public abstract void eat(); 
} 
  
class Child extends Person { 
  public void eat() { 
    System.out.println("eat something"); 
  } 
} 
  
public class Demo { 
  public static void main(String[] args) { 
    Person p = new Child(); 
    p.eat(); 
  } 
}

Laufendes Ergebnis: etwas essen

Wie Sie sehen können, verwenden wir Child, um die Person-Klasse zu erben , und implementieren Sie dann Child Eine Instanz von , wandeln Sie sie in einen Verweis auf die Person-Klasse um

Wenn die Child-Klasse hier jedoch nur einmal verwendet wird, wäre es dann nicht mühsam, sie als unabhängige Klasse zu schreiben?

Zu diesem Zeitpunkt wurden anonyme innere Klassen eingeführt

Beispiel 2: Grundlegende Implementierung anonymer innerer Klassen


 public abstract void eat(); 
} 
  
public class Demo { 
  public static void main(String[] args) { 
    Person p = new Person() { 
      public void eat() { 
        System.out.println("eat something"); 
      } 
    }; 
    p.eat(); 
  } 
}

Ergebnis ausführen: etwas essen

Wie Sie sehen können, haben wir die Methode direkt in der abstrakten Klasse Person in geschweiften Klammern

implementiert, sodass eine weggelassen werden kann Klassenschreiben

Darüber hinaus können anonyme innere Klassen auch auf Schnittstellen verwendet werden

Beispiel 3: Verwendung anonymer innerer Klassen auf Schnittstellen


interface Person { 
  public void eat(); 
} 
  
public class Demo { 
  public static void main(String[] args) { 
    Person p = new Person() { 
      public void eat() { 
        System.out.println("eat something"); 
      } 
    }; 
    p.eat(); 
  } 
}

Ergebnis ausführen: etwas essen

Wie aus dem obigen Beispiel ersichtlich ist, gilt: Solange eine Klasse abstrakt oder eine Schnittstelle ist, dann Methoden in seinen Unterklassen kann mithilfe anonymer innerer Klassen implementiert werden

Die häufigste Situation ist die Implementierung von Multithreading, da Sie zum Implementieren von Multithreading die Thread-Klasse oder die Runnable-Schnittstelle erben müssen

Beispiel 4: Anonyme innere Klassenimplementierung der Thread-Klasse


public class Demo { 
  public static void main(String[] args) { 
    Thread t = new Thread() { 
      public void run() { 
        for (int i = 1; i <= 5; i++) { 
          System.out.print(i + " "); 
        } 
      } 
    }; 
    t.start(); 
  } 
}

Laufendes Ergebnis: 1 2 3 4 5

Beispiel 5: Anonyme innere Klassenimplementierung der Runnable-Schnittstelle


public class Demo { 
  public static void main(String[] args) { 
    Runnable r = new Runnable() { 
      public void run() { 
        for (int i = 1; i <= 5; i++) { 
          System.out.print(i + " "); 
        } 
      } 
    }; 
    Thread t = new Thread(r); 
    t.start(); 
  } 
}

Laufergebnis: 1 2 3 4 5

Das obige ist der detaillierte Inhalt vonZusammenfassung und gemeinsame Nutzung anonymer innerer Klassen in Java. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen 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