PHpullh
학습 라이브러리/Java/내부 클래스 4종류

JAVA · 객체지향

내부 클래스 4종류

멤버 클래스, 정적 중첩 클래스, 지역 클래스, 익명 클래스의 차이를 비교합니다.

객체지향중급inner-class중첩클래스익명클래스static-nested

핵심 설명

멤버 클래스, 정적 중첩 클래스, 지역 클래스, 익명 클래스의 차이를 비교합니다.

Java code

public class OuterClass {
    private int field = 10;

    // 1. 멤버 내부 클래스 (non-static)
    class Inner {
        void show() {
            System.out.println("외부 필드: " + field); // 외부 접근 가능
        }
    }

    // 2. 정적 중첩 클래스 (static)
    static class StaticNested {
        void show() {
            // field 접근 불가 (인스턴스 없음)
            System.out.println("정적 중첩 클래스");
        }
    }

    void method() {
        // 3. 지역 클래스
        class Local {
            void show() {
                System.out.println("지역 클래스, field=" + field);
            }
        }
        new Local().show();
    }

    public static void main(String[] args) {
        OuterClass outer = new OuterClass();

        // 멤버 내부 클래스 생성
        Inner inner = outer.new Inner();
        inner.show();

        // 정적 중첩 클래스 생성 (외부 인스턴스 불필요)
        StaticNested nested = new StaticNested();
        nested.show();

        // 4. 익명 클래스
        Runnable r = new Runnable() {
            @Override public void run() {
                System.out.println("익명 클래스");
            }
        };
        r.run();
    }
}

학습 팁

대부분의 경우 정적 중첩 클래스가 적합합니다. 외부 인스턴스 참조를 유지하지 않아 메모리 누수 위험이 없습니다.

주의할 점

멤버 내부 클래스는 암묵적으로 외부 인스턴스 참조를 가집니다. 직렬화하면 외부 객체까지 직렬화되어 문제가 발생합니다.

자주 묻는 질문

내부 클래스 4종류란 무엇인가요?

멤버 클래스, 정적 중첩 클래스, 지역 클래스, 익명 클래스의 차이를 비교합니다.

내부 클래스 4종류 학습 시 주의할 점은 무엇인가요?

멤버 내부 클래스는 암묵적으로 외부 인스턴스 참조를 가집니다. 직렬화하면 외부 객체까지 직렬화되어 문제가 발생합니다.