내부클래스
익명클래스
클래스이름 참조변수이름 = new 클래스이름(){
// 메서드선언
};
- 단어 그대로 이름이 없는 객체
- 단 하나의 외부클래스를 상속받거나 인터페이스를 구현하여 즉석으로 생성한 객체
- 따라서 반드시 부모(인터페이스, 추상클래스)가 필요함
- 단독 생성 불가
- 이름이 없기때문에 생성자를 가질 수 없음
익명클래스의 사용
1. 인터페이스
public abstract class Inter {
public abstract void sample();
}
2. 익명클래스
public class App{
public static void main(String[]args){
Inter i = new Inter() {
@Override
public void sample() {
System.out.println("Hello, World!");
}
i.sample(); // Hello, World!가 출력됨
};
}
}
- 익명클래스 안에서 새로 정의된 메서드나 변수는 만들수는 있으나 실행 불가
3. 익명클래스2
public class App{
public static void main(String[]args){
Inter i = new Inter() {
public void test(){
System.out.println("익명클래스 내부에서 정의된 메서드")
}
@Override
public void sample() {
System.out.println("Hello, World!");
}
i.test(); // 에러
};
i.test(); // 에러
}
}
- 익명클래스는 보통 이벤트의 Listener부분에 자주 사용됨