반응형

익명 클래스 (anonymous class)

  • 이름이 없는 일회용 클래스. 정의와 생성을 동시에

 

익명클래스가 뭐냐면, 이름이 없는 일회용 클래스다.
익명 클래스는 클래스 정의와 객체 생성을 동시에 한다.

익명 클래스의 문법은 아래와 같다. 

 

보통, 일반적인 클래스는 class MyClass { } 이렇게 만들고, 객체 생성은 MyClass mc = new MyClass(); 이런식으로 할 것이다.
그런데, 만약에 클래스 이름이 없으면, 객체를 생성할 수 없을 것이다. 클래스 이름이 없으므로, 조상이름을 대신 쓴다. 

그런데, 익명 클래스처럼 클래스 이름이 없으면,  일반적인 방법으로 객체를 생성할 수 없을 것이다. 

따라서, 그럴 경우에는, 자기이름이 없으므로 조상이름을 대신 사용한다.

new Object() {} 이런식으로 쓴다.

이름에 자기 이름 대신 조상 이름을 사용한다.

혹은 인터페이스이름을 사용한다.  그리고 생성해야 하므로 new를 쓰는 것이다 . 

 

익명 클래스는, 이름이 없고, 이름이 없어서 조상클래스의 이름 or 구현인터페이스의 이름을 사용하고,
정의와 동시에 생성을 한다.

 

 

예제를 보면, 익명 클래스 사용하는 방법을 확인 할 수 있다.
익명클래스라서 컴파일하고나면, 이름이 숫자로 붙는다. 그리고, Ex7_17의 내부클래스이므로 외부클래스 이름이 따라 붙는 것을 확인할 수 있다. 

 

 

AWT(Java의 윈도우 프로그래밍 도구)를 작성할 때, 위와 같은 코드를 많이 사용한다.

1번은 클래스 정의이고, 2번은 객체생성부분인데, 
대부분 이 클래스는 1회성이다. 게다가 대부분 내부 클래스로 많이 사용한다. 
그래서 이게 1회성인데 굳이 번거롭게 클래스로 따로 만들어지는게 비효율적이었다.

그래서 이것을 대부분, 익명 클래스로 처리한다.

그래서 위 코드의 클래스 2개를 합치면 아래와 같다.

EventHandler라는 이름을 사용하지 않고, 조상 또는 인터페이스 이름(ActionalListener)을 사용해서 익명클래스로 만들어서 사용한다. 
그리고 몸통{}에는 내용을 집어넣으면 된다.

반응형