오늘은 자바에서 흔히 사용되지만, 익숙하지 않은 개념인 '익명 클래스'에 대해 알아보겠습니다. '익명 클래스'라는 이름에서 알 수 있듯이, 이는 이름이 없는 클래스입니다. 이름이 없다고 해서 그 존재가 희미한 것은 아니라는 것을 이 글을 통해 알아가시기 바랍니다. 이번 포스팅에서는 익명 클래스의 선언 방법, 활용 예시, 그리고 장점에 대해 알아보도록 하겠습니다.
익명 클래스란?
익명 클래스는 이름이 없는 클래스로, 주로 한 번만 사용할 클래스에 사용됩니다. 클래스의 구현과 객체 생성을 동시에 하기 때문에 코드가 간결해지는 장점이 있습니다. 익명 클래스는 어떤 클래스를 상속 받거나 인터페이스를 구현해야만 생성이 가능합니다. 다음은 익명 클래스의 선언 방법입니다.
클래스 상속을 통한 익명 클래스 선언 방법:
new 부모클래스이름() {
// 구현(인스턴스 멤버 선언)
};
인터페이스를 통한 익명 클래스 선언 방법:
new 구현인터페이스이름() {
// 구현(인스턴스 멤버 선언)
};
익명 클래스 활용 예시
익명 클래스를 어떻게 사용하는지 간단한 예시를 통해 살펴보겠습니다.
예시 1
간단하게 ActionListener 인터페이스를 구현하는 익명 클래스를 생성해보겠습니다. 여기서는 Java Swing 라이브러리의 JButton 컴포넌트에 ActionListener를 적용하여, 버튼을 클릭했을 때의 동작을 정의하는데 익명 클래스를 사용하였습니다.
import javax.swing.JButton;
import javax.swing.JOptionPane;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
public class AnonymousExample {
public static void main(String[] args) {
JButton showButton = new JButton("Show");
showButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
JOptionPane.showMessageDialog(null, "버튼이 클릭되었습니다.");
}
});
// 여기서 showButton이 화면에 표시되고 사용자에게 클릭을 기다립니다.
}
}
위의 예제에서는 ActionListener 인터페이스를 구현하는 익명 클래스를 선언하고, 그 인스턴스를 JButton의 addActionListener 메소드에 전달했습니다. 이렇게 해서, 버튼이 클릭될 때마다 팝업 메시지로 "버튼이 클릭되었습니다."라는 메시지가 출력됩니다.
예시 2
다음은 Greeting 인터페이스를 구현하는 익명 클래스를 생성하는 예시입니다. Greeting 인터페이스는 단 하나의 메서드인 greet()를 가지고 있습니다.
public class AnonymousExample {
interface Greeting {
void greet();
}
public static void main(String[] args) {
Greeting greeting = new Greeting() {
public void greet() {
System.out.println("Hello, world!");
}
};
greeting.greet(); // "Hello, world!"를 출력합니다.
}
}
위의 예제에서는 Greeting 인터페이스를 구현하는 익명 클래스를 선언하고, 그 인스턴스를 greeting 변수에 할당했습니다. 이렇게 해서, greeting.greet()를 호출하면 "Hello, world!"라는 메시지가 출력됩니다.
익명 클래스 사용하는 이유와 장점
익명 클래스를 사용하는 주된 이유는 코드를 간결하게 만들고 가독성을 향상시키기 위함입니다. 특히, 클래스를 한 번만 사용할 경우, 익명 클래스를 사용하면 클래스를 따로 선언하지 않아도 되므로 코드의 양이 줄어듭니다.
또한, 익명 클래스는 주로 콜백 함수를 구현하는데 사용됩니다. 콜백 함수란, 특정 이벤트가 발생했을 때 시스템에 의해 자동으로 호출되는 함수를 말합니다. Java에서는 이벤트 리스너 또는 스레드 작업 등에서 익명 클래스를 자주 사용합니다.
마지막으로, 익명 클래스를 사용하면 객체의 타입을 명확하게 표현할 수 있습니다. 객체를 생성하면서 바로 인터페이스를 구현하거나 클래스를 상속받기 때문에, 그 객체가 어떤 타입에 속하는지 명확하게 알 수 있습니다.
익명 클래스는 약간 복잡하게 느껴질 수도 있지만, 한 번 익숙해지면 코드의 간결성과 가독성을 크게 향상시킬 수 있습니다.
'개발 > Java' 카테고리의 다른 글
Java에서의 예외처리(Exception Handling) (0) | 2023.07.19 |
---|---|
Java에서의 함수형 인터페이스와 람다식 (0) | 2023.07.19 |
Java에서의 내부 클래스 (0) | 2023.07.19 |
Java에서의 마커 인터페이스(MarkerInterface) (0) | 2023.07.19 |
Java에서의 다중상속 (0) | 2023.07.19 |