✅ 1. 익명 클래스란?
- "익명" + "클래스" 이름이 없는 클래스를 의미한다.
- 일회성으로 1개의 객체를 생성하기 위한 클래스이며, 익명 클래스 정의와 동시에 객체를 생성할 수 있다.
✅ 1. 익명 클래스 사용 방법
// 부모 클래스
class Animal {
public void sound() {
System.out.println("동물소리");
}
}
public class Main {
public static void main(String[] args) {
Animal dog = new Animal() {
@Override
public void sound() {
Systme.out.println("강아지 소리");
}
};
dog.bark();
}
}
- 익명클래스로 만들게 되면, 익명의 자식 클래스가 만들어지게 된다. 즉, 오버라이딩을 통해 재정의를 하기 위해 사용을한다.
- 만약 재정의를 하지 않는 경우에도 메서드 호출이 가능하며, 이는 상속과 같은 개념이다.
- 단, 익명 클래스에 상위클래스 즉, 현재 생성하는 클래스에 없는 메서드나 필드를 새로 만들 경우에는 사용은 가능하지만, 익명 클래스 내부에서만 사용이 가능하며, 외부에서는 사용이 불가능하다.
- 즉, 외부에서 사용이 가능한건 원래 클래스의 정의된 필드나 메서드이다.
✅ 2. 익명 클래스 사용 이유
- 상속 뿐만 아니라 인터페이스, 추상도 가능해서 클래스 재사용 없이 딱 한 번만 구현해서 쓸 거라면, 별도의 클래스 저으이 말고 익명 클래스를 사용하는 것이 더 좋음.
- 지역 변수처럼 익명 클래스로 정의하고 스택이 끝나면 삭제되도록 할 수 있어 메모리 절약 측면에서 이점이 있음.
- 상속한 클래스의 일부 메서드만 간단히 재정의하고 싶은 경우, 굳이 새 클래스를 만들지 않고 그 자리에서 재정의를함.
- 인터페이스 즉석 구현이 가능해서 스레드 등에서 많이 사용이 됨.