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.
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 :
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. protectedField
、defaultField
和 publicField
,因为它们不是私有的。
实战案例:
假设我们有一个 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
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!