반응형

익명 클래스 (anonymous class)

익명 클래스란?

  • 익명 클래스(anonymous class)란 다른 내부 클래스와는 달리 이름을 가지지 않는 클래스를 의미
  • 익명 클래스는 클래스의 선언과 동시에 객체를 생성하므로, 단 하나의 객체만을 생성하는 일회용 클래스
new 조상클래스이름(){
	// 멤버 선언	
}

// 혹은

new 구현인터페이스이름() {
	// 멤버 선언	
}
  • 자기 이름을 못 쓰고 조상클래스의 이름을 쓴다.
  • 혹은 interface를 사용한다.
  • 익명클래스라서 클래스 이름을 사용하지 못한다.
// Ex1) Object 익명클래스인 경우

class Ex7_17{
    Object iv = new Object(){ void method(){ …. } };                       // 익명 클래스    
    static Object cv = new Object(){ void method(){ …. } };                // 익명 클래스    

    void myMethod(){                                
        Object lv = new Object(){ void method(){ …. } };                   // 익명 클래스    
    }
}
// Ex2) AWT( 자바의 윈도우 프로그램 ) 의 경우 (익명클래스가 아닌경우)

import java.awt.*;
import java.awt.event.*;

class Ex7_18 {
    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!!!");
    }
}

대부분 Ex2와 같은 경우에는 클래스를 1회성으로 사용되기 때문에 따로 클래스 정의할 필요가 없고 익명클래스화 시켜서 사용한다.

import java.awt.*;
import java.awt.event.*;

class Ex7_18 {
    public static void main(String[] args){
        Button b = new Button("Start");

// 조상 또는 인터페이스 이름을 입력한뒤 필요한 처리를 입력한다
// 클래스의 정의와 객체 생성을 동시에 처리한다
        b.addActionListener(new ActionListener(){
            public void actionPerformed( ActionEvent e ){
                System.out.println("ActionEvent occurred!!!");
            }
        });
    }
}

[자바의 정석 - 기초편] ch7-51,52 익명 클래스

 

반응형

+ Recent posts