Rumah  >  Artikel  >  Java  >  Bagaimanakah kelas dalaman tanpa nama Java boleh mengakses pembolehubah ahli kelas luar?

Bagaimanakah kelas dalaman tanpa nama Java boleh mengakses pembolehubah ahli kelas luar?

WBOY
WBOYasal
2024-05-01 09:27:021121semak imbas

Kelas dalaman tanpa nama mengakses pembolehubah ahli kelas luar, termasuk pembolehubah persendirian, melalui kata kunci ini dan akses pembolehubah ahli kelas luar melalui ini sama seperti kelas dalaman tanpa nama itu sendiri mengisytiharkan pembolehubah ini.

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

Mekanisme Java untuk kelas dalaman tanpa nama untuk mengakses pembolehubah ahli kelas luaran

Kelas dalaman tanpa nama ialah kelas dalam tanpa nama, biasanya digunakan untuk mencipta kelas penggunaan sekali sahaja. Kelas dalaman tanpa nama boleh mengakses pembolehubah ahli kelas luarnya, termasuk pembolehubah persendirian.

Mekanisme akses:

Kelas dalam tanpa nama mengakses pembolehubah ahli kelas luar melalui kata kunci ininya. Kata kunci this menunjukkan contoh kelas dalam tanpa nama, yang sebenarnya merupakan contoh kelas luarnya. Oleh itu, ini boleh mengakses terus pembolehubah ahli kelas luar, sama seperti kelas dalaman tanpa nama itu sendiri telah mengisytiharkan pembolehubah ini. 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

Kes praktikal:

Kami mencipta kelas luar Kelas Luar dengan pembolehubah ahli persendirian rahsia dan mencipta kelas dalaman tanpa nama untuk mengakses pembolehubah:
    rrreee
  • Apabila menjalankan program ini, ia akan mengeluarkan: "Rahsia kelas dalaman tanpa nama: 42". Ini kerana kelas dalam tanpa nama boleh mengakses pembolehubah peribadi rahsia kelas luar OuterClass melalui this.
  • Perlu diambil perhatian bahawa:
🎜🎜🎜Kelas dalaman tanpa nama hanya boleh mengakses pembolehubah ahli kelas luar, tetapi bukan kaedahnya. 🎜🎜Jika pembolehubah ahli kelas luar adalah muktamad, kelas dalam tanpa nama hanya boleh membaca tetapi tidak mengubah suai pembolehubah. 🎜🎜

Atas ialah kandungan terperinci Bagaimanakah kelas dalaman tanpa nama Java boleh mengakses pembolehubah ahli kelas luar?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn