>  기사  >  Java  >  Java 함수 액세스 수정자와 익명 내부 클래스 간의 관계

Java 함수 액세스 수정자와 익명 내부 클래스 간의 관계

王林
王林원래의
2024-04-25 15:33:01652검색

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

위 코드에서 익명 내부 클래스의 함수는 protectedField, defaultFieldpublicField에 액세스할 수 있습니다. 비공개. 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 멤버 변수가 private이 아닌 한 익명 내부 클래스의 함수는 동일한 패키지 또는 하위 패키지에서 액세스할 수 있습니다. 🎜

위 내용은 Java 함수 액세스 수정자와 익명 내부 클래스 간의 관계의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.