내부클래스(inner class)는 주로 AWT나 Swing과 같은 GUI어플리케이션의 이벤트처리 외에는 잘 사용하지 않을 정도로 사용빈도가 높지 않다.
내부클래스란 클래스 내에 선언된 클래스이다.
클래스에 다른 클래스를 선언하는 이유는 간단하다.
두클래스가 서로 긴밀한 관계에 있기 떄문이다.
한 클래스를 다른 클래스의 내부 클래스로 선언하면 두 클래스의 멤버들 간에 서로 쉽게 접근할 수 있다는 장점과
외부에는 불필요한 클래스를 감춤으로써 코드의 복잡성을 줄일 수 있다는 장점이 있다.
1. 내부 클래스에서 외부 클래스의 멤버들을 쉽게 접근할 수 있다.
2. 코드의 복잡성을 줄일 수 있다(캡슐화)
내부클래스의 종류와 특징
* 인스턴스 클래스 : 외부클래스의 멤버변수 선언위치에 선언하며, 외부클래스의 인스턴스멤버처럼 사용된다. 주로 외부클래스의 인스턴스멤버들과 관련된 작업에 사용될 목적으로 선언된다.
* 스태틱 클래스 : 외부클래스의 멤버변수 선언위치에 선언하며, 외부클래스의 static멤버처럼 다루어진다. 주로 외부클래스의 static멤버, 특히 static메서드에서 사용될 목적으로 선언된다.
* 지역 클래스 : 외부클래스의 메서드나 초기화블럭 안에 선언하며, 선언된 영역 내부에서만 사용 될 수 있다.
* 익명 클래스 : 클래스의 선언과 객체의 생성을 동시에 하는 이름없는 클래스(일회용)