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

2024年 5月 1日 54.7k 0

匿名内部类通过其 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.mryunwei.com)其它相关文章!

相关文章

JavaScript2024新功能:Object.groupBy、正则表达式v标志
PHP trim 函数对多字节字符的使用和限制
新函数 json_validate() 、randomizer 类扩展…20 个PHP 8.3 新特性全面解析
使用HTMX为WordPress增效:如何在不使用复杂框架的情况下增强平台功能
为React 19做准备:WordPress 6.6用户指南
如何删除WordPress中的所有评论

发布评论