JAVA - 익명클래스(Anonymous class)에 대하여
익명클래스(Anonymous class)에 대하여
자바에서 익명클래스란 말그대로 이름이 없고, 한 줄로 선언되거나 생성되는 클래스를 말한다.
익명클래스는 복잡할 수 있지만, 익명클래스는 몇 가지 간단한 메소드만 있는 소규모 클래스에 가장 적합하다.
자바에서 익명클래스란 말그대로 이름이 없고, 한 줄로 선언되거나 생성되는 클래스를 말한다.
익명클래스 사용방법
1
2
3
|
new 인터페이스이름 or 클래스이름 {
클래스 바디
}
| cs |
클래스 바디안에서는 인터페이스나 추상클래스를 구현해야 한다.
People 인터페이스
1
2
3
|
public interface People {
public void run();
}
| cs |
Hello 추상클래스
1
2
3
4
5
6
|
public abstract class Hello {
public void sayHello() {
System.out.println("안녕");
}
}
| cs |
익명클래스 예제
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
public class Anonymous {
public static void main(String[] args) {
People people = new People() {
@Override
public void run() {
System.out.println("달려라 하니 !");
}
};
Hello hello = new Hello() {
@Override
public void sayHello() {
// TODO Auto-generated method stub
System.out.println("안녕하세요!!");
}
};
people.run(); // 달려라 하니 !
hello.sayHello(); // 안녕하세요!!
// 이렇게도 가능하다.
new People() {
@Override
public void run() {
}
};
}
}
| cs |
위에 예제에서 봤듯이 인터페이스나 추상클래스안에 메서드가 많아지면 그만큼 익명클래스에서 구현을 해줘야하는 단점이 있다.
익명클래스는 소수의 메서드만 있을때 구현하는 것이 바람직하다.
보통 함수에서 메서드의 파라미터로 클래스로 받을경우 그 클래스를 구현하기 위한 익명클래스로 많이 사용된다.
익명클래스를 사용할때 주의할점
- 익명클래스는 생성자를 가질 수 없다 그러므로 익명클래스를 생성할 때 파라미터를 넣을수가 없다.
- 지역변수를 포함하여 익명 클래스가 선언된 블록 안에서 접근할수가 있다.
댓글
댓글 쓰기