JAVA/포스팅

자바 정적 내부 클래스

짜집퍼박사(짜박) 2023. 11. 13. 00:59

정적 내부 클래스(Static Inner Class)는 외부 클래스의 인스턴스에 종속되지 않는 내부 클래스로, 외부 클래스의 인스턴스를 생성하지 않고도 정적 내부 클래스의 객체를 생성할 수 있습니다. 이 클래스는 주로 외부 클래스의 네임스페이스를 정리하거나, 독립적인 유틸리티 클래스를 만들 때 사용됩니다.

정적 내부 클래스의 특징은 다음과 같습니다.

 

1. 인스턴스 종속성이 없음

정적 내부 클래스는 외부 클래스의 인스턴스에 종속되지 않습니다. 따라서 외부 클래스의 인스턴스를 생성하지 않고도 정적 내부 클래스의 객체를 생성할 수 있습니다.

 

2. 외부 클래스의 정적 및 비정적 멤버 접근 가능

정적 내부 클래스는 외부 클래스의 모든 멤버(정적 및 비정적)에 접근할 수 있습니다.

 

3. 외부 클래스의 인스턴스 생성 없이 객체 생성 가능

정적 내부 클래스의 객체를 생성할 때는 외부 클래스의 인스턴스 생성이 필요하지 않습니다.

 

정적 내부 클래스의 선언 형식은 다음과 같습니다.

public class Outer {
    // 외부 클래스의 멤버 변수
    private static int outerStaticField;
    private int outerField;

    // 외부 클래스의 정적 메서드
    public static void outerStaticMethod() {
        System.out.println("Outer static method");
    }

    // 외부 클래스의 비정적 메서드
    public void outerMethod() {
        System.out.println("Outer method");
    }

    // 정적 내부 클래스의 선언
    public static class StaticInner {
        // 정적 내부 클래스에서 외부 클래스의 정적 멤버에 접근 가능
        public void innerStaticMethod() {
            System.out.println("Inner static method: " + outerStaticField);
            outerStaticMethod();
        }
    }
}

위의 예제에서 StaticInner 클래스는 Outer 클래스의 정적 멤버인 outerStaticField와 outerStaticMethod()에 접근할 수 있습니다. 또한 정적 내부 클래스의 객체를 생성할 때는 외부 클래스의 인스턴스 생성이 필요하지 않습니다.

public class Main {
    public static void main(String[] args) {
        // 정적 내부 클래스의 객체 생성
        Outer.StaticInner staticInner = new Outer.StaticInner();
        
        // 정적 내부 클래스의 메서드 호출
        staticInner.innerStaticMethod();
    }
}

정적 내부 클래스는 주로 외부 클래스와 독립적인 유틸리티 클래스를 만들거나, 네임스페이스를 정리하는 데 사용됩니다.

 

With ChatGPT

'JAVA > 포스팅' 카테고리의 다른 글

자바 익명 내부 클래스  (0) 2023.11.14
자바 지역 내부 클래스  (0) 2023.11.14
자바 멤버 내부 클래스  (0) 2023.11.13
자바 내부 클래스의 접근성  (0) 2023.11.13
자바 내부 클래스의 선언  (0) 2023.11.13