Notice
Recent Posts
Recent Comments
Link
SeouliteLab
[Java/자바] 익명 클래스(Anonymous class) 본문
Java에서 익명 클래스는 클래스를 정의하면서 동시에 객체를 생성하는 방법입니다. 주로 인터페이스의 구현체를 간단하게 작성할 때 사용됩니다. 익명 클래스는 한 번만 사용되는 간단한 클래스를 만들 때 유용합니다.
1. 익명 클래스 예제
예제 1: 인터페이스 구현
인터페이스를 구현하는 익명 클래스를 생성하는 예제입니다.
// AnonymousClassExample1.java
interface Greeting {
void greet();
}
public class AnonymousClassExample1 {
public static void main(String[] args) {
Greeting greeting = new Greeting() { // 익명 클래스 생성
@Override
public void greet() {
System.out.println("Hello, world!");
}
};
greeting.greet(); // 출력 결과: Hello, world!
}
}
예제 2: 추상 클래스 확장
추상 클래스를 확장하는 익명 클래스를 생성하는 예제입니다.
// AnonymousClassExample2.java
abstract class Shape {
abstract void draw();
}
public class AnonymousClassExample2 {
public static void main(String[] args) {
Shape shape = new Shape() { // 익명 클래스 생성
@Override
void draw() {
System.out.println("Drawing a shape");
}
};
shape.draw(); // 출력 결과: Drawing a shape
}
}
예제 3: 스레드 생성
스레드를 생성하는 익명 클래스 예제입니다.
// AnonymousClassExample3.java
public class AnonymousClassExample3 {
public static void main(String[] args) {
Thread thread = new Thread() { // 익명 클래스 생성
@Override
public void run() {
System.out.println("Thread is running");
}
};
thread.start(); // 출력 결과: Thread is running
}
}
예제 4: 이벤트 리스너
이벤트 리스너를 구현하는 익명 클래스 예제입니다.
// AnonymousClassExample4.java
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
public class AnonymousClassExample4 {
public static void main(String[] args) {
JFrame frame = new JFrame("Anonymous Class Example");
JButton button = new JButton("Click me");
button.addActionListener(new ActionListener() { // 익명 클래스 생성
@Override
public void actionPerformed(ActionEvent e) {
System.out.println("Button clicked");
}
});
frame.add(button);
frame.setSize(300, 200);
frame.setVisible(true);
}
}
예제 5: 인터페이스를 이용한 익명 클래스
인터페이스를 활용하여 익명 클래스를 생성하는 예제입니다.
// AnonymousClassExample5.java
interface MyInterface {
void method();
}
public class AnonymousClassExample5 {
public static void main(String[] args) {
MyInterface obj = new MyInterface() { // 익명 클래스 생성
@Override
public void method() {
System.out.println("Method called");
}
};
obj.method(); // 출력 결과: Method called
}
}
예제 6: 함수형 인터페이스와 람다식
Java 8부터 함수형 인터페이스와 람다식이 도입되면서, 익명 클래스를 대체하는 더 간단한 방법이 등장했습니다.
// AnonymousClassExample6.java
@FunctionalInterface
interface MyFunctionalInterface {
void myMethod();
}
public class AnonymousClassExample6 {
public static void main(String[] args) {
MyFunctionalInterface obj = () -> System.out.println("Lambda expression"); // 람다식 사용
obj.myMethod(); // 출력 결과: Lambda expression
}
}
'프로그래밍' 카테고리의 다른 글
[Java/자바] 객체 비교 (==, equals, Comparable, Comparator) 예제 & 설명 (0) | 2024.03.19 |
---|---|
[Java/자바] 익명 함수에서 상수 및 변수 참조 (0) | 2024.03.19 |
[Java/자바] 변수의 유효 범위 (Variable Scope) (0) | 2024.03.19 |
[Java/자바] printf()를 사용한 문자열 포맷 출력 (0) | 2024.03.19 |
[Java/자바] instanceof 연산자: 객체 타입 확인 (0) | 2024.03.19 |