Maison  >  Article  >  Java  >  La relation entre les modificateurs d'accès aux fonctions Java et les classes internes anonymes

La relation entre les modificateurs d'accès aux fonctions Java et les classes internes anonymes

王林
王林original
2024-04-25 15:33:01606parcourir

Le modificateur d'accès d'une fonction Java détermine la portée de visibilité de la fonction, notamment publique, protégée, par défaut et privée. En tant que classe à l'intérieur de la classe externe, la classe interne anonyme peut accéder à tous les membres non privés de la classe externe, de sorte que les droits d'accès de ses fonctions sont liés aux droits d'accès aux fonctions de la classe externe.

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

La relation entre les modificateurs d'accès des fonctions Java et les classes internes anonymes

Les modificateurs d'accès des fonctions Java déterminent à partir duquel la fonction est accessible. Ces modificateurs incluent :

  • public : accessible de n'importe où
  • protégé : accessible à partir du même package ou sous-package
  • par défaut (package) : accessible uniquement à partir du même package
  • private : Accessible uniquement dans la classe dans laquelle la fonction est définie

Classe interne anonyme est une classe en Java qui est définie dans une classe sans spécifier de nom. Ils sont généralement utilisés pour créer des objets à usage unique, tels que l'implémentation de gestionnaires d'événements ou de comparateurs.

Les classes internes anonymes peuvent accéder à tous les membres non privés de la classe externe. Par conséquent, les droits d’accès des fonctions d’une classe interne anonyme sont liés aux droits d’accès des fonctions de sa classe externe. Par exemple :

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();
    }
}

Dans le code ci-dessus, les fonctions de la classe interne anonyme peuvent accéder à protectedField, defaultField et publicField car elles ne le sont pas. privé de. 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

🎜Cas pratique : 🎜🎜🎜Supposons que nous ayons une interface EventProcessor, qui définit une méthode process(). Nous voulons créer une classe interne anonyme qui implémente la méthode process(), qui peut accéder aux données de la classe externe. 🎜rrreee🎜Dans ce cas, tant que la variable membre data n'est pas privée, les fonctions de la classe interne anonyme peuvent y accéder à partir du même package ou sous-package. 🎜

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn