이름이 없는 일회용 클래스. 클래스 정의와 객체 생성이 동시에 이루어진다. 딱 하나의 객체만 필요할 경우 사용된다.
부모클래스이름 변수명 = new 부모클래스 이름 { 내용 구현 }; 인터페이스이름 변수명 = new 인터페이스 이름 { 내용 구현 };
보통의 자바 클래스에서는,
// 1.클래스 정의
class MyClass {
...
}
// 2.객체 생성
MyClass myClass = new MyClass();
이런식으로 이루어진다.
하지만 익명 클래스는,
// 생성과 정의를 동시에
Object myClass = new Object() {
void myMethod() {
...
}
};
public class Person {
String name;
public Person(String name) {
this.name = name;
}
public void speak() {
System.out.println("내용없음");
};
}
interface Dancer {
void dance();
}
public class HelloWorld {
public static void main(String[] args) {
Person p1 = new Person("홍길동") {
@Override
public void speak() {
System.out.println(name + "입니다");
}
};
p1.speak();
Dancer d1 = new Dancer() {
@Override
public void dance() {
System.out.println("춤을춥니다");
}
};
d1.dance();
}
}
✅ 컴파일 시에는 익명 클래스는 이름이 없기 때문에 외부클래스명$숫자.class
형식으로 파일이 생성된다.
예) FileName$1.class