> For the complete documentation index, see [llms.txt](https://docs.sysout.co.kr/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.sysout.co.kr/base-language/java/advanced/inner-class/area-inner-class.md).

# 지역 중첩 클래스

## 지역 중첩 클래스

지역 중첩 클래스란 메소드 안에 클래스를 만드는 것을 의미한다. 메소드 자체가 일회성 코드를 보관하는 도구이기 때문에 지역 중첩 클래스도 메소드 실행 시 일시적으로 생성되는 일회성 클래스의 성격을 강하게 띈다.

### 지역 중첩 클래스의 형태

지역 중첩 클래스는 다음 형태로 구현한다.

```java
public class Outer {//외부 클래스

    public void testMethod() {//메소드
    
        class Inner {//지역 중첩 클래스 
        
        }
    
    }

}
```

메소드 내부에서 생성되고 사용되므로 외부에서 접근이나 참조가 불가능하다.

### 지역 중첩 클래스의 활용 예시&#x20;

{% tabs %}
{% tab title="Bluemarble" %}
{% code title="Bluemarble.java" %}

```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());
    }
}
```

{% endcode %}
{% endtab %}

{% tab title="InnerClassExample05" %}

```java
public class InnerClassExample05 {
    public static void main(String[] args){
        Bluemarble game = new Bluemarble();
        game.dice();
    }
}
```

{% endtab %}
{% endtabs %}

지역 중첩 클래스는 그리 자주 사용되지는 않으나 메소드의 내용이 복잡할 경우 이를 간소화 할 수 있는 효과가 있다.
