CODEDRAGON ㆍDevelopment/Java
로컬 내부 클래스(Local Inner Class)
· Outer클래스의 메소드 안에 정의한 클래스
· Inner클래스의 특징을 모두 가지고 있습니다.
· Local 내부 클래스는 특정 메서드 안에서 정의되는 클래스(특정 메서드 안에서 선언되는 지역변수와 같습니다)입니다
· Local 내부 클래스는 메소드 내에 정의가 되어서, 메소드 내에서만 인스턴스의 생성 및 참조 변수의 선언이 가능합니다.(메서드가 호출될 때 생성할 수 있으며 메서드의 수행력이 끝나면 지역변수와 같이 자동 소멸됩니다.)
· 외부 클래스의 메소드나 초기화 블록에 선언된 클래스를 의미합니다. 이러한 지역 클래스는 선언된 블록 내에서만 사용할 수 있습니다.
로컬 내부 클래스의 특징
· 지역변수 처럼 사용
· 로컬 내부 클래스의 메모리 생성 시점은 메소드가 호출될 때
· 로컬 내부 클래스의 메모리 소멸 시점은 메소드가 종료될 때
· Outer클래스의 멤버변수와 상수값만 접근 가능
· 로컬 내부 클래스가 정의된 메소드내의 로컬변수에는 접근 할 수 없습니다.
· 로컬내부클래스의 객체 생성은 해당 클래스가 포함된 메소드에서만 가능합니다.
Local 내부 클래스의 구성 형식
class OuterClass { … public void methodA() { // 멤버 메서드 class InnerClass {
} } … } |
Local 클래스가 지역변수, 매개변수 접근시 고려사항
· 메소드가 반환되는 순간 매개변수와 지역변수는 소멸됩니다. 그러므로 매개변수와 지역변수에 접근할수 없습니다.
· 단, final로 선언된 변수의 접근은 허용합니다. 접근의 허용을 위해서 final 변수를 로컬 내부 클래스의 인스턴스가 접근 가능한 영역에 복사하게 됩니다.(메모리의 스태틱 영역에 복사)
· 메모리구조에서 클래스영역의 상수 메모리(constants pool)영역에 저장됩니다.
(클래스 메모리영역은 정적코드 영역과 상수메모리 영역으로 구성되어 있습니다.
'Development > Java' 카테고리의 다른 글
Object Class(오브젝트 클래스), Object 클래스, java.lang 패키지 (0) | 2017.09.28 |
---|---|
Anonymous 내부 클래스(익명 내부 클래스), Anonymous 내부 클래스의 구성 (0) | 2017.09.28 |
static 내부 클래스, static 내부 클래스의 구성 (0) | 2017.09.28 |
내부 클래스 정의 시 주의사항( 장점), 내부 클래스(Inner Class)의 종류, Inner 클래스의 특징 (0) | 2017.09.27 |
NestClass 를 만드는 이유 (0) | 2017.09.27 |