-
다른 내부 클래스와는 달리 이름을 가지지 않는 클래스를 의미
-
익명 클래스는 클래스의 선언과 동시에 객체를 생성
-
기본문법
클래스이름 참조변수이름 = new 클래스이름(){
메소드의 구현
};
-
익명 클래스는 선언과 동시에 객체를 생성하여 단 하나의 객체만을 생성하는 일회용 클래스
-
구현해야 하는 메소드가 적은 추상클래스, 인터페이스 등을 구현할 때 사용
-
익명클래스와 일반클래스의 추상클래스 상속 비교
- 추상클래스
public abstract class Test1 {
abstract void test();
}
- 일반적인 상속클래스
- 상속클래스 생성
- public class Test2 extends Test1 {
void test(){
System.out.println("hello");
}
}
- 객체 생성
- 익명클래스
- Test1 t1 = new Test1(){
@Override
void test(){
System.out.println("hello");
}
};
- 일반적인 클래스와의 차이점
- Test1 () 옆에 {}가 있고, 객체 생성과 동시에 Overide를 통해 재정의하고 있다는 것
- 그렇다면 상속받은 새로운 클래스인 것인가?
- 상속을 받으려면 “신규 클래스명 extends 클래스”의 구조로 신규 클래스명을 가져야함
- 위의 소스 코드는 신규 클래스명이 존재하지 않는다.
- Overide를 통해 재정의하게 되었으므로, 본래의 클래스도 아니고 신규 상속 클래스도 아닌, 이름이 없는 익명의 클래스가 만들어짐과 동시에 익명객체가 생성