Heim > Java > javaLernprogramm > Hauptteil

Die Beziehung zwischen Java-Funktionszugriffsmodifikatoren und anonymen inneren Klassen

王林
Freigeben: 2024-04-25 15:33:01
Original
650 Leute haben es durchsucht

Der Zugriffsmodifikator einer Java-Funktion bestimmt den Sichtbarkeitsbereich der Funktion, einschließlich öffentlich, geschützt, Standard und privat. Als Klasse innerhalb der äußeren Klasse kann die anonyme innere Klasse auf alle nicht privaten Mitglieder der äußeren Klasse zugreifen, sodass die Zugriffsrechte ihrer Funktionen mit den Funktionszugriffsrechten der äußeren Klasse verknüpft sind.

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

Die Beziehung zwischen den Zugriffsmodifikatoren von Java-Funktionen und anonymen inneren Klassen

Die Zugriffsmodifikatoren von Java-Funktionen bestimmen, von wo aus auf die Funktion zugegriffen werden kann. Zu diesen Modifikatoren gehören:

  • öffentlich: von überall aus zugänglich
  • geschützt: aus demselben Paket oder Unterpaket zugänglich
  • Standard (Paket): nur aus demselben Paket zugänglich
  • privat: Der Zugriff ist nur innerhalb der Klasse möglich, in der die Funktion definiert ist.

Anonyme innere Klasse ist eine Klasse in Java, die innerhalb einer Klasse definiert wird, ohne einen Namen anzugeben. Sie werden normalerweise zum Erstellen von Einwegobjekten verwendet, beispielsweise zum Implementieren von Ereignishandlern oder Komparatoren.

Anonyme innere Klassen können auf alle nicht privaten Mitglieder der äußeren Klasse zugreifen. Daher hängen die Zugriffsrechte von Funktionen in einer anonymen inneren Klasse mit den Zugriffsrechten von Funktionen in ihrer äußeren Klasse zusammen. Zum Beispiel:

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();
    }
}
Nach dem Login kopieren

Im obigen Code können die Funktionen in der anonymen inneren Klasse auf protectedField, defaultField und publicField zugreifen, da dies nicht der Fall ist privat von. 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();
    }
}
Nach dem Login kopieren

在这种情况下,只要 data

🎜Praktischer Fall: 🎜🎜🎜Angenommen, wir haben eine EventProcessor-Schnittstelle, die eine process()-Methode definiert. Wir möchten eine anonyme innere Klasse erstellen, die die Methode process() implementiert, die auf Daten der äußeren Klasse zugreifen kann. 🎜rrreee🎜In diesem Fall können Funktionen in der anonymen inneren Klasse über dasselbe Paket oder Unterpaket darauf zugreifen, solange die Mitgliedsvariable data nicht privat ist. 🎜

Das obige ist der detaillierte Inhalt vonDie Beziehung zwischen Java-Funktionszugriffsmodifikatoren und anonymen inneren Klassen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage