이름이 없는 내부클래스이다.
클래스의 선언과 객체생성을 동시에 한다.
때문에 단 한번만 사용될 수 있고 오직 하나의 객체만을 생성할 수 있다.
이름이 없기 때문에 생성자를 가질 수 없다.
조상 클래스의 이름이나 구현하고자하는 인터페이스의 이름을 사용하여 정의한다.
new 조상클래스 이름(){
// 멤버선언
}
// 또는
new 구현인터페이스이름(){
// 멤버선언
}
익명클래스 적용 전.
import java.awt.*;
import java.awt.event.*;
public class AnonyMousClass {
public static void main(String[] args) {
Button b = new Button("start");
b.addActionListener(new EventHandler());
}
}
// 한 번만 쓰이는 일회용 클래스
class EventHandler implements ActionListener {
public void actionPerformed(ActionEvent e) {
System.out.println("ActionEvent occurred!");
}
}
익명클래스 적용 후
import java.awt.*;
import java.awt.event.*;
public class AnonyMousClass {
public static void main(String[] args) {
Button b = new Button("start");
b.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
System.out.println("액션 발동");
}
});
}
}
깔끔해지긴 한다.