AWT나 Swing과 같은 GUI어플리케이션의 이벤트처리 외에는 잘 사용하지 않을 정도로 빈도가 높지 않으므로 기본 원리와 특징을 이해하는 정도까지 학습
내부 클래스는 클래스 내에 선언된 클래스
- 내부 캘르스에서 외부 클래스의 멤버들을 쉽게 접근할 수 있다.
- 코드의 복잡성을 줄일 수 있다.(캡슐화)
instance 클래스 : 외부 클래스의 멤버변수 선언위치에 선언, 외부 클래스의 인스턴스 멤버처럼 사용 주로 외부 클래스의 인스턴스멤버들과 관련된 작업에 사용
static 클래스 : 외부 클래스의 멤버변수 선언위치에 선언, 외부 클래스의 static멤버처럼 사용
주로 외부 클래스의 static멤버, static메서드에서 사용
local 클래스 : 외부 클래스의 메서드나 초기화블럭 안에 선언, 선언된 영역 내부에서만 사용
anonymous 클래스 : 클래스의 선언과 객체의 생성을 동시에 하는 이름없는 클래스(일회용)
내부 클래스도 클래스이기 때문에
abstract, final과 같은 제어자
private, protected과 같은 접근 제어자
사용가능
클래스의 선언과 객체의 생성을 동시에 하기 때문에 단 한번만 사용될 수 있고 오직 하나의 객체만을 생성할 수 있는 일회용 클래스이다.
Object iv = new Object(){ void method(){} }; // 익명클래스 static Object cv = new Object(){ void method(){} }; // 익명클래스 void myMethod() { Object lv = new Object(){ void method(){} }; // 익명클래스 }
이름이 없기 때문에 생성자도 가실 수 없다.
조상클래스의 이름이나 구현하고자 하는 인터페이스의 이름을 사용해서 정의하기 때문에
오로지 단 하나의 클래스를 상속받거나 단 하나의 인터페이스만을 구현할 수 있다.