[자바 – Java] 내부 클래스 ; 인스턴스 정적 지역 익명 클래스

1. 내부 클래스 (inner class)

 

1) 클래스 내부에 선언한 클래스이다.

2) 내부 클래스를 감싸고 있는 외부 클래스와 밀접한 연관이 있다.

3) 다른 외부 클래스에서 사용할 일이 거의 없는 경우에 내부 클래스로 선언해서 사용한다.

4) 중첩 클래스라고도 한다.


2. 내부클래스의 종류

 

1) 인스턴스 내부 클래스

 

– 내부적으로 사용할 클래스를 선언한다. (private으로 선언하는 것을 권장한다.)

– 외부 클래스가 생성된 후 생성된다.

 

2) 정적(static) 내부 클래스

 

– 외부 클래스 생성과 무관하게 사용할 수 있다.

– 정적 변수, 정적 메서드

 

3) 지역(local) 내부 클래스

 

– 지역 변수처럼 메서드 내부에서 정의하여 사용하는 클래스이다.

– 메서드 호출이 끝나면 메서드에 사용된 지역변수의 유효성은 사라진다.

– 메서드 호출 이후에도 사용해야 하는 경우가 있을 수 있으므로 지역 내부 클래스에서 사용하는 메서드의 지역 변수나 매개변수는 final로 변환된다.

 

4) 익명(anonymous) 내부 클래스

 

– 이름이 없는 클래스이다.

– 클래스의 이름을 생략하고 주로 하나의 인터페이스나 하나의 추상 클래스를 구현하여 반환하는 식으로 처리를 한다.