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

匿名内部类通过其 this 关键字访问外部类成员变量,包括私有变量,通过 this 访问外部类成员变量就像匿名内部类本身声明了这些变量一样。

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

Java 匿名内部类访问外部类成员变量的机制

匿名内部类是不带有名称的内部类,通常用于创建一次性使用的类。匿名内部类可以访问其外部类的成员变量,包括私有变量。

访问机制:

匿名内部类通过其 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

需要注意的是:

  • 匿名内部类只能访问外部类的成员变量,不能访问其方法。
  • 如果外部类的成员变量是 final 的,则匿名内部类只能读取而不可以修改该变量。

以上就是Java 匿名内部类是如何访问外部类的成员变量的?的详细内容,更多请关注www.sxiaw.com其它相关文章!