ホームページ  >  記事  >  Java  >  Java の匿名内部クラスはどのようにして外部クラスのメンバー変数にアクセスするのでしょうか?

Java の匿名内部クラスはどのようにして外部クラスのメンバー変数にアクセスするのでしょうか?

WBOY
WBOYオリジナル
2024-05-01 09:27:021121ブラウズ

匿名内部クラスは、this キーワードを通じてプライベート変数を含む外部クラスのメンバー変数にアクセスし、匿名内部クラス自体がこれらの変数を宣言したかのように、this を通じて外部クラスのメンバー変数にアクセスします。

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

匿名内部クラスが外部クラスのメンバー変数にアクセスするための Java のメカニズム

匿名内部クラスは、名前のない内部クラスであり、通常は 1 回限りの使用クラスを作成するために使用されます。匿名の内部クラスは、プライベート変数を含む外部クラスのメンバー変数にアクセスできます。

アクセスメカニズム:

匿名内部クラスは、this キーワードを通じて外部クラスのメンバー変数にアクセスします。 this キーワードは、匿名の内部クラスのインスタンスを指します。これは、実際にはその外部クラスのインスタンスです。したがって、this は、あたかも匿名内部クラス自体がこれらの変数を宣言したかのように、外部クラスのメンバー変数に直接アクセスできます。 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

実際的なケース:

プライベートメンバー変数 secret を持つ外部クラス OuterClass class を作成し、変数にアクセスするための匿名内部クラスを作成します:
    rrreee
  • このプログラムを実行すると、「匿名の内部クラスのシークレット: 42」が出力されます。これは、匿名内部クラスが this を通じて外部クラス OuterClass のプライベート変数 secret にアクセスできるためです。
  • 次のことに注意してください:
🎜🎜🎜匿名の内部クラスは、外部クラスのメンバー変数にのみアクセスできますが、そのメソッドにはアクセスできません。 🎜🎜外部クラスのメンバー変数がfinalの場合、匿名内部クラスは変数を読み取ることのみができ、変更することはできません。 🎜🎜

以上がJava の匿名内部クラスはどのようにして外部クラスのメンバー変数にアクセスするのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。