Java 30(지역 내부 클래스 Local Inner Class)

Kang.__.Mingu·2024년 5월 12일
0

Java

목록 보기
32/108

Local Inner Class(지역 내부 클래스)

  • 외부 클래스의 메소드에 선언된 내부 클래스
  • 메소드 호출시 클래스가 메모리에 저장되어 사용되며 메소드 종료 후 자동 소멸
  • 지역 내부클래스는 선언된 메소드에서만 사용 가능한 내부 클래스
  • 접근제한자 및 static 제한자를 사용하여 지역 내부클래스 작성 불가능
  • abstract 또는 final 제한자는 지역 내부클래스에서 작성시 사용 가능
  • 비동기식 처리를 위한 스레드 객체를 생성하기 위해 작성
  • 지역 내부 클래스에서는 사용하지 않는 필드, 생성자, 메소드를 작성하는 것을 비권장

OuterThree

public class OuterThree {
    private int outerNum;

    public OuterThree() {
    }

    public OuterThree(int outerNum) {
        this.outerNum = outerNum;
    }

    public int getOuterNum() {
        return outerNum;
    }

    public void setOuterNum(int outerNum) {
        this.outerNum = outerNum;
    }

    public void outerDisplay() {
        System.out.println("outerNum = " + outerNum);
    }
	
    public void local() {
        // 지역 내부클래스(Local Inner Class): 외부클래스의 메소드에 선언된 내부클래스
        // => 메소드 호출시 클래스가 메모리에 저장되어 사용되며 메소드 종료 후 자동 소멸
        // => 지역 내부클래스는 선언된 메소드에서만 사용 가능한 내부 클래스
        // => 접근제한자 및 static 제한자를 사용하여 지역 내부클래스 작성 불가능
        // => abstract 또는 final 제한자는 지역 내부클래스에서 작성시 사용 가능
        // => 비동기식 처리를 위한 스레드 객체를 생성하기 위해 작성
        class InnerThree {
            // 지역 내부 클래스에서는 사용하지 않는 필드, 생성자, 메소드를 작성하는 것을 비권장
            int innerNum;

            void innerDisplay() {
                System.out.println("innerNum = " + innerNum);
            }
        }

        // 지역 내부클래스는 지역 내부클래스가 선언된 메소드에서만 객체를 생성하여 객체를 참조해
        // 필드 또는 메소드 사용 가능
        InnerThree innerThree = new InnerThree();
        innerThree.innerNum = 200;
        innerThree.innerDisplay();
    }
}

OuterThreeApp

public class OuterThreeApp {
    public static void main(String[] args) {
        OuterThree outerThree = new OuterThree(100);
        outerThree.outerDisplay();
        System.out.println("============================================================");
        // 메소드 호출시 지역 내부클래스가 메모리에 저장되고 객체가 생성되어 필드 또는 메소드 사용
        outerThree.local();
        System.out.println("============================================================");
    }
}
profile
최선을 다해 꾸준히 노력하는 개발자 망고입니당 :D

0개의 댓글