익명클래스는 이름이 없는 클래스로 클래스의 선언과 생성이 동시에 되는 클래스이다.
단, 익명 클래스는 말 그대로 이름이 없는 클래스이기 때문에 재사용이 불가능하다.
→ 같은 내용의 익명클래스를 두 번 선언하고 생성해도 이를 컴파일하면 .class파일이 다른 이름으로 2개가 생성된다.
( ex 외부클래스이름$1, 외부클래스이름$2 // 이름이 없기 때문에 숫자로 구분된다.)
익명 클래스의 특징
- 재사용이 불가능하다.
- 선언과 동시에 생성이 된다.
- 이름이 없기 때문에 생성자를 가질 수 없다.
- 하나의 클래스를 상속받거나 인터페이스를 구현 가능하다. (2개 이상 x)
익명 클래스를 사용하는 이유
익명 클래스를 사용하는 이유는 코드 내에서 한 번만 만들어지고 사용되는 객체의 경우 별도의 클래스 파일을 만드는 것보다 익명 클래스로 1회성으로 사용하는 것이 유지보수 면에서 유리하다.
익명 클래스 선언 방법
부모클래스나인터페이스의이름 변수명 = new 부모클래스나인터페이스의이름() { /* 오버라이딩 */ };
public class Test { // 추상 메서드를 구현하도록 강제성 부여
public static void main(String[] args) {
// AnonyclassTes타입이 아니라 AnonyclassTest를 구현한 클래스이다.
// 인터페이스는 객체 생성불가
AnonyclassTest anonyclassTest = new AnonyclassTest() { // 익명 클래스 생성
@Override
public void method() {
System.out.println("over riding method");
}
};
anonyclassTest.method();
method1(new AnonyclassTest() {
@Override
public void method() {
System.out.println("파라미터로 익명클래스를 참조한다.");
}
});
}
static public void method1(AnonyclassTest A) {
A.method();
}
}
'Java' 카테고리의 다른 글
| throw, checked - unchecked 예외, throw (0) | 2023.05.23 |
|---|---|
| 예외 (0) | 2023.05.22 |
| 초기화 블록 (0) | 2023.05.15 |
| 인터페이스(interface) (0) | 2023.05.12 |
| 추상클래스 (0) | 2023.05.11 |