Java 関数アクセス修飾子と匿名内部クラスの関係

王林
リリース: 2024-04-25 15:33:01
オリジナル
650 人が閲覧しました

Java 関数のアクセス修飾子は、パブリック、プロテクト、デフォルト、プライベートなど、関数の可視性の範囲を決定します。匿名内部クラスは外部クラス内のクラスとして、外部クラスのすべての非プライベート メンバーにアクセスできるため、その関数のアクセス権は外部クラスの関数のアクセス権に関連します。

Java 函数的访问权限修饰符之与匿名内部类的关系

Java関数のアクセス修飾子と匿名内部クラスの関係

Java関数のアクセス修飾子は、関数にアクセスできる場所を決定します。これらの修飾子には以下が含まれます:

  • public: どこからでもアクセス可能
  • protected: 同じパッケージまたはサブパッケージからアクセス可能
  • default (パッケージ): 同じパッケージからのみアクセス可能
  • private : 関数が定義されているクラス内でのみアクセス可能

匿名内部クラスとは、名前を指定せずにクラス内で定義されるJavaのクラスです。これらは通常、イベント ハンドラーやコンパレーターの実装など、使い捨てオブジェクトを作成するために使用されます。

匿名の内部クラスは、外部クラスのすべての非プライベート メンバーにアクセスできます。したがって、匿名内部クラスの関数のアクセス権は、その外部クラスの関数のアクセス権に関連します。例:

public class OuterClass {

    private int privateField = 1;
    protected int protectedField = 2;
    int defaultField = 3;
    public int publicField = 4;

    public void someMethod() {
        new Runnable() {

            @Override
            public void run() {
                // 内部类可以访问所有非私有成员变量
                System.out.println(protectedField);
                System.out.println(defaultField);
                System.out.println(publicField);
            }
        }.run();
    }
}
ログイン後にコピー

上記のコードでは、匿名内部クラスの関数は、protectedFielddefaultField、および publicField にアクセスできません。のプライベート。 protectedFielddefaultFieldpublicField,因为它们不是私有的。

实战案例:

假设我们有一个 EventProcessor 接口,它定义了一个 process() 方法。我们想创建一个匿名内部类来实现 process() 方法,该方法可以访问外部类中的数据。

public class Main {

    private String data = "Hello";

    public static void main(String[] args) {
        EventProcessor processor = new EventProcessor() {

            @Override
            public void process() {
                // 匿名内部类可以访问外部类中的 data 成员变量
                System.out.println(data);
            }
        };

        processor.process();
    }
}
ログイン後にコピー

在这种情况下,只要 data

🎜実際のケース: 🎜🎜🎜 process() メソッドを定義する EventProcessor インターフェイスがあるとします。 process() メソッドを実装する匿名の内部クラスを作成して、外部クラスのデータにアクセスできるようにしたいと考えています。 🎜rrreee🎜 この場合、 data メンバー変数がプライベートでない限り、匿名内部クラスの関数は同じパッケージまたはサブパッケージからそれにアクセスできます。 🎜

以上がJava 関数アクセス修飾子と匿名内部クラスの関係の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート