[Java] Verschachtelte Klasse

Verschachtelte Klasse

statische Mitgliedsklasse

public class MyClass{...}
class MyHelper{...}
//MyHelper-Definition unter dem Klassenblock
public class MyClass {
  //Definition der statischen Elementklasse
  //Mitglieder können nicht von außerhalb meiner Klasse gesehen werden
  private static class MyHelper {
    public void show() {
      System.out.println("Nested class is running!");
    }
  }
  public void run() {
    //
    var helper = new MyHelper();
    helper.show();
  }
}
public class NestBasic {
  public static void main(String[] args) {
    var c = new MyClass();
    c.run();
    //
    // var h = new MyClass.MyHelper(); //
  }
}

MyHelpe ist ein Fehler, der von außerhalb von MyClass nicht sichtbar ist! Nicht statische Elementklasse (= innere Klasse) * Kein statischer Modifikator * ** Innere Klasse **: Gehört zum umschließenden Objekt * ** Statische Elementklasse **: Gehört zur umschließenden Klasse

class MyClass {
  private String str1 = "Beiliegende Instanz";
  private static String str2 = "Beiliegende Klasse";

  private class MyHelper {
    private String str1 = "Verschachtelte Instanz";
    private static final String str2 = "Verschachtelte Klasse";

    public void show() {
      //Die innere Klasse hat einen Verweis auf das umschließende Objekt
      //MyClass.Damit erreichbar
      System.out.println(MyClass.this.str1); //Beiliegende Instanz
      System.out.println(MyClass.str2); //Beiliegende Klasse
    }
  }

  public void run() {
    //Innere Klasseninstanz, die durch Einschließen der Klasseninstanzmethode erstellt wurde
    var helper = new MyHelper();
    helper.show();
    //Greifen Sie vom umschließenden Objekt auf die innere Klasse zu
    System.out.println(helper.str1); //Verschachtelte Instanz
    System.out.println(MyHelper.str2); //Verschachtelte Klasse
  }
}

public class NestedAccess {
  public static void main(String[] args) {
    var c = new MyClass();
    c.run();
  }
}

Beispiel einer nicht statischen Elementklasse (innere Klasse)

java:java.util.AbstractList.java


package java.util;
import java.util.function.Consumer;
public abstract class AbstractList<E> extends AbstractCollection<E> implements List<E> {
//...Unterlassung

    /*Iterators
Die interne Implementierung der Itr-Klasse muss nicht angezeigt werden
Es wäre schön, wenn der Typ Iteratoren, der die Implementierungsquelle darstellt, von außen gesehen werden könnte.
Der Rückgabewert der Iteratormethode ist der Iterator-Typ
    */
    public Iterator<E> iterator() {
        return new Itr();
    }
//...Unterlassung

    /*Innere Klasse
Implementierte einen Iterator, der auf das private Feld in der Liste zugreift und der Reihe nach auf die untergeordneten Elemente zugreift
Iterator wird separat als Iterator-Implementierungsklasse definiert
    */
    private class Itr implements Iterator<E> {
//...Unterlassung
    }
//...Unterlassung
}

Anonyme Klasse (anonyme Klasse)

//Registrierung des Ereignis-Listeners
btn.setOnClickListener(
  //Anonyme Klasse(Ereignis-Listener)Definition
  new View.OnClickListener(){
    //btn Klicken Sie hier, um die aktuelle Uhrzeit in txt anzuzeigen
    @Override
    public void onClick(View view){
      TextView txt = findViewById(R.id.txtResult);
      txt.setText(LocalDateTime.now().toString());
    }
  }
);

Lokale Klasse

Recommended Posts

[Java] Verschachtelte Klasse
[Java] Klassenvererbung
Java-Scanner-Klasse
Java HashMap-Klasse
Anonyme Java-Klasse
Über die Java-Klasse
[Java] Abstrakte Klasse
[Java] Objektklasse
Lokale Java-Klasse
Über die Klassenteilung (Java)
Informationen zur Java StringBuilder-Klasse
[Java] Über Singleton Class
Überprüfung der Java-Innenklasse
Feld für den Java-Klassentyp
Java-Programmierung (Klassenmethode)
Informationen zur Java String-Klasse
Verschachtelte Klasse (für mich)
Java-Programmierung (Klassenstruktur)
Über die abstrakte Klasse von Java
[Java] Integer-Wrapper-Klassenreferenz
Java-Memo-Teilzeichenfolge (Standardklasse)
Java-Tipps - Modifikatoren der StataticUtility-Klasse
Java unflexibler String-Klassen-Teilstring
Länge des Java-Memos (Standardklasse)
[Implementierung] Java Prozessklassennotizen
Informationen zu Java Class Loader-Typen
Verwendung der Java-Klasse
[Java] Komparator der Collection-Klasse
Definition und Instanziierung von Java-Klassen
Java
Java-Lernnotiz (abstrakte Klasse)
Zusammenfassung der Java Math Klasse
[Java] Was ist Klassenvererbung?
Java-Klasse Variable Klassenmethode
Java
[Java-Grundlagen] Was ist Klasse?
Erstellen Sie mit JAVA eine unveränderliche Klasse
Rufen Sie Kotlins versiegelte Klasse von Java aus an
[Java] Objektorientierte Syntaxklassenmethode / Argument
Verschiedene Methoden der Java String Klasse
[Java] Memo zum Benennen von Klassennamen
So zerlegen Sie eine Java-Klassendatei
Kotlin-Klasse zum Senden an Java-Entwickler
StringBuffer- und StringBuilder-Klasse in Java
So dekompilieren Sie eine Java-Klassendatei
Java (Klassentyp für Feld verwenden)
Java-Quellcode zum Lesen der Klasse java.lang.Math
[Java] Button-Vorlagenklasse von Graphics
Verwendung von Klassenmethoden [Java]
[Java] Verwendung der Math-Klasse
Java lernen (0)
Java studieren ―― 3
[Java] -Array
Was ist eine Klasse in der Java-Sprache (3 /?)
Java geschützt
[Java] Anmerkung
[Java] Modul
Java-Array
Java studieren ―― 9
Java Scratch Scratch