자바의정석

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

유호야 2022. 3. 24. 17:12
반응형

ch7-51 익명 클래스 (anonymous class)

익명 이름이 없는 클래스 / 일회용 클래스 / 클래스의 정의와 생성을 동시에

이름이 없는 클래스이기 때문에 조상 이름을 대신 사용한다. 

MyClass mc = new MyClass() ; (x) 
                   new Object() {}

new 조상이름을 쓰던가, 인터페이스 이름을 쓰던가

클래스 생성과 정의를 하나로 합친 것 

조상의 이름을 사용한다. 

"이름이 없고, 생성과 정의를 동시에 한다, 조상 또는 인터페이스의 의 이름을 사용함"

내부 클래스이기 때문에, 외부 클래스의 이름이 따라온다.

 


AWT (Java의 윈도우 프로그래밍) 

대부분 클래스 정의를 하고, 객체 생성을 위에서 한다. 
대부분 클래스가 일회성이다. 한 번 쓰고 사용하지 않음. 
내부에서 주로 사용한다. 일회성인데, 클래스를 만드는 것보다 익명 클래스를 사용하는 것이 낫다. 

이름을 지우고 조상이름을 남긴다. new ActionListener(); 괄호 안에다가 저 내용을 집어 넣는다. 
조상 또는 인터페이스 이름을 사용.

필요할 때 만들어보면 되는 정도이다.

- 실습 

아래 코드를 익명 클래스로 변경

import java.awt.Button;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

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 occured! ");
	}
}
import java.awt.Button;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

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 occured! ");
			}
		});
	}
}
반응형