Heim  >  Artikel  >  Java  >  Wie greift eine anonyme innere Java-Klasse auf Mitgliedsvariablen einer äußeren Klasse zu?

Wie greift eine anonyme innere Java-Klasse auf Mitgliedsvariablen einer äußeren Klasse zu?

WBOY
WBOYOriginal
2024-05-01 09:27:021175Durchsuche

Anonyme innere Klassen greifen über ihr Schlüsselwort this auf Mitgliedsvariablen der äußeren Klasse, einschließlich privater Variablen, zu und greifen über dieses Schlüsselwort auf die Mitgliedsvariablen der äußeren Klasse zu, als ob die anonyme innere Klasse diese Variablen selbst deklariert hätte.

Java 匿名内部类是如何访问外部类的成员变量的?

Java-Mechanismus für anonyme innere Klassen, um auf externe Klassenmitgliedsvariablen zuzugreifen

Anonyme innere Klassen sind innere Klassen ohne Namen, die normalerweise zum Erstellen von Klassen für den einmaligen Gebrauch verwendet werden. Eine anonyme innere Klasse kann auf Mitgliedsvariablen ihrer äußeren Klasse zugreifen, einschließlich privater Variablen.

Zugriffsmechanismus:

Die anonyme innere Klasse greift über ihr Schlüsselwort this auf die Mitgliedsvariablen der äußeren Klasse zu. Das Schlüsselwort this verweist auf eine Instanz einer anonymen inneren Klasse, die tatsächlich eine Instanz ihrer äußeren Klasse ist. Daher kann this direkt auf die Mitgliedsvariablen der äußeren Klasse zugreifen, so als ob die anonyme innere Klasse selbst diese Variablen deklariert hätte. this 关键字来访问外部类的成员变量。this 关键字指向匿名内部类的实例,它实际上是其外部类的实例。因此,this 可以直接访问外部类的成员变量,就像匿名内部类本身声明了这些变量一样。

实战案例:

我们创建一个具有私有成员变量 secret 的外部类 OuterClass类,并创建一个匿名内部类来访问该变量:

public class OuterClass类 {
    private int secret = 42;

    public static void main(String[] args) {
        OuterClass类 outer = new OuterClass类();
        Runnable r = new Runnable() {
            @Override
            public void run() {
                System.out.println("匿名内部类的 secret:" + this.secret);
            }
        };
        r.run();
    }
}

当运行这个程序时,它将输出:"匿名内部类的 secret:42"。这是因为匿名内部类能够通过 this 访问外部类 OuterClass类 的私有变量 secret

Praktischer Fall:

Wir erstellen eine äußere Klasse OuterClass class mit einer privaten Mitgliedsvariablen secret und erstellen eine anonyme innere Klasse, um auf die Variable zuzugreifen:
    rrreee
  • Wenn dieses Programm ausgeführt wird, wird Folgendes ausgegeben: „Anonymes inneres Klassengeheimnis: 42“. Dies liegt daran, dass die anonyme innere Klasse über this auf die private Variable secret der äußeren Klasse OuterClass zugreifen kann.
  • Es ist zu beachten, dass:
🎜🎜🎜Anonyme innere Klassen können nur auf Mitgliedsvariablen der äußeren Klasse zugreifen, nicht jedoch auf deren Methoden. 🎜🎜Wenn die Mitgliedsvariable der äußeren Klasse endgültig ist, kann die anonyme innere Klasse die Variable nur lesen, aber nicht ändern. 🎜🎜

Das obige ist der detaillierte Inhalt vonWie greift eine anonyme innere Java-Klasse auf Mitgliedsvariablen einer äußeren Klasse zu?. 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