JAVA/포스팅

자바 지역 내부 클래스

짜집퍼박사(짜박) 2023. 11. 14. 00:48

지역 내부 클래스(Local Inner Class)는 특정 메서드나 블록 안에서만 유효한 내부 클래스입니다. 이 클래스는 메서드 또는 블록 내에서만 인스턴스화되어 사용될 수 있으며, 외부에서는 접근할 수 없습니다. 주로 특정 메서드나 블록에서만 필요한 클래스를 정의할 때 사용됩니다.

지역 내부 클래스의 주요 특징은 다음과 같습니다.

 

1. 지역 변수 접근

지역 내부 클래스는 정의된 메서드나 블록 내에서만 유효하며, 해당 메서드나 블록의 지역 변수에 자유롭게 접근할 수 있습니다. 단, 이 지역 변수는 final이거나 실질적으로 final로 사용되어야 합니다.

 

2. 외부 클래스 멤버 접근 불가능

지역 내부 클래스는 정의된 메서드나 블록 내에서만 인스턴스화되므로, 외부 클래스의 멤버에 직접적으로 접근할 수 없습니다.

 

3. 외부 클래스의 인스턴스 멤버 접근 불가능

지역 내부 클래스는 외부 클래스의 인스턴스 멤버에 직접 접근할 수 없습니다. 인스턴스 멤버에 접근해야 하는 경우에는 인스턴스 내부 클래스를 사용해야 합니다.

아래는 지역 내부 클래스의 예시입니다.

public class Outer {
    private int outerField = 10;

    public void outerMethod() {
        final int localVar = 5;  // 지역 변수 (final 또는 실질적으로 final)

        // 지역 내부 클래스의 선언
        class LocalInner {
            // 지역 내부 클래스에서 외부 클래스의 인스턴스 멤버에 접근 불가능
            // private int innerField = 20;  // Error

            // 지역 내부 클래스에서 외부 메서드의 지역 변수에 접근 가능
            public void display() {
                System.out.println("OuterField: " + outerField);
                System.out.println("LocalVar: " + localVar);
            }
        }

        // 지역 내부 클래스의 인스턴스 생성 및 메서드 호출
        LocalInner localInner = new LocalInner();
        localInner.display();
    }
}

위의 예제에서 LocalInner 클래스는 outerMethod 메서드 내에서만 유효하며, 해당 메서드의 지역 변수인 localVar에 접근할 수 있습니다. 주의해야 할 점은 localVar 변수가 final 또는 실질적으로 final이어야 한다는 것입니다.

지역 내부 클래스는 해당 메서드나 블록에서만 사용되는 기능을 캡슐화하고 싶을 때 유용하게 활용됩니다.

 

With ChatGPT

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

자바 예외(Exception)  (0) 2023.11.14
자바 익명 내부 클래스  (0) 2023.11.14
자바 정적 내부 클래스  (0) 2023.11.13
자바 멤버 내부 클래스  (0) 2023.11.13
자바 내부 클래스의 접근성  (0) 2023.11.13