> Java > java지도 시간 > Java 내부 클래스에 정적 필드가 없는 이유는 무엇입니까?

Java 내부 클래스에 정적 필드가 없는 이유는 무엇입니까?

Linda Hamilton
풀어 주다: 2024-12-01 15:34:16
원래의
408명이 탐색했습니다.

Why Can't Java Inner Classes Have Static Fields?

Java가 내부 클래스의 정적 필드를 금지하는 이유

Java는 내부 클래스가 "인스턴스"로 간주되므로 내부 클래스의 정적 필드 및 메서드를 금지합니다. 내부 클래스는 본질적으로 둘러싸는 인스턴스에 연결되어 있음을 의미합니다. class.

인스턴스 내부 클래스 이해

인스턴스 내부 클래스는 둘러싸는 클래스의 인스턴스 속성과 유사합니다. 이는 둘러싸는 클래스의 인스턴스가 생성될 때 생성되며 해당 인스턴스에 의존하여 존재합니다. 따라서 이러한 내부 클래스 내에서 정적 기능을 허용하는 것은 거의 의미가 없습니다.

정적 속성 및 종속성

정적 필드 및 메서드와 같은 정적 요소는 다음과 같이 설계되었습니다. 특정 객체 인스턴스와 독립적이어야 합니다. 인스턴스 내부 클래스 내에서 정적 필드를 정의하면 바깥쪽 인스턴스에 대한 종속성이 발생하며 이는 정적 속성의 목적과 모순됩니다.

예: 카운터 속성

생성된 InnerClass 객체의 수를 세는 것이 목표인 예를 생각해 보세요. 아래와 같이 InnerClass 내에서 정적 카운터 필드를 정의한다면:

class OuterClass {
    class InnerClass {
        static int count; // Compile error
    }
}
로그인 후 복사

이 필드가 참조하는 인스턴스의 개수가 명확하지 않기 때문에 혼란을 초래할 수 있습니다. 각각 고유한 InnerClass를 포함하는 OuterClass의 여러 인스턴스가 생성되면 집계 수를 결정하는 것이 모호해집니다.

정적 내부 클래스

Java는 정적 내부 클래스를 허용합니다. , 또는 "중첩된" 내부 클래스는 다음과 같이 선언됩니다.

class OuterClass {
    static class InnerClass {
        static int count = 0; // Valid static field
    }
}
로그인 후 복사

정적 내부 클래스는 둘러싸는 객체와 독립적이며 정적 필드와 메서드를 가질 수 있습니다. 하지만 여전히 바깥쪽 클래스와 밀접하게 관련되어 있으며 바깥쪽 클래스의 정적 멤버에만 액세스할 수 있습니다.

위 내용은 Java 내부 클래스에 정적 필드가 없는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿