지역 중첩 클래스란 메소드 안에 클래스를 만드는 것을 의미한다. 메소드 자체가 일회성 코드를 보관하는 도구이기 때문에 지역 중첩 클래스도 메소드 실행 시 일시적으로 생성되는 일회성 클래스의 성격을 강하게 띈다.
지역 중첩 클래스의 형태
지역 중첩 클래스는 다음 형태로 구현한다.
public class Outer {//외부 클래스
public void testMethod() {//메소드
class Inner {//지역 중첩 클래스
}
}
}
메소드 내부에서 생성되고 사용되므로 외부에서 접근이나 참조가 불가능하다.
지역 중첩 클래스의 활용 예시
Bluemarble.java
public class Bluemarble {
public void dice(){
//1회용 주사위세트 클래스 생성
class DiceSet {
int first, second;
void generate(){
Random r = new Random();
this.first = r.nextInt(6) + 1;
this.second = r.nextInt(6) + 1;
}
void print(){
System.out.println("첫번째 = " + first + ", 두번째 = " +second);
}
int getTotal(){
return this.first + this.second;
}
}
//지역중첩 클래스 객체 생성 및 기능 호출(같은 메소드)
DiceSet set = new DiceSet();
set.generate();
set.print();
System.out.println("합계 = " + set.getTotal());
}
}
public class InnerClassExample05 {
public static void main(String[] args){
Bluemarble game = new Bluemarble();
game.dice();
}
}
지역 중첩 클래스는 그리 자주 사용되지는 않으나 메소드의 내용이 복잡할 경우 이를 간소화 할 수 있는 효과가 있다.