엔지니어로 가는 길

JAVA 익명 클래스(Anonymous Classes) 본문

프로그래밍/Java

JAVA 익명 클래스(Anonymous Classes)

탐p슨 2020. 5. 28. 15:35
728x90

출처: https://docs.oracle.com/javase/tutorial/java/javaOO/anonymousclasses.html

 

익명 클래스

 

- 익명 클래스를 사용하면 코드를 더 간결하게 만들 수 있다.

- 익명 클래스는 정의되는 동시에 객체가 생성된다.

- 이름이 없다는 점을 빼면 지역 클래스와 유사하다.

(지역 클래스를 한 번만 사용하면 되는 경우라면 익명 클래스를 사용하라.)

- 익명 클래스는 자신을 포함하는 외부 클래스(이하 enclosing class)의 멤버에 접근할 수 있다.

(final 또는 유사 final로 선언된 변수에만 접근할 수 있다.)

 

 

(지역 클래스에서도 final 변수 또는 유사 final로 선언된 변수에만 접근할 수 있는 것 같다.)

 

 

- 중첩 클래스와 마찬가지로 익명 클래스의 변수는 같은 이름을 가진 enclosing class의 변수를 가린다.

 

익명 클래스 문법

 

- 익명 클래스는 표현식이다.

(따라서 반드시 statement의 일부여야 하며, 중괄호 뒤에 세미콜론이 붙어야 한다,)

- 익명 클래스의 문법은 클래스를 정의하는 블록이 있다는 점을 제외하면 생성자 호출과 같다.

- 익명 클래스에 필드와 메소드, 지역 클래스를 선언할 수 있지만 생성자는 선언할 수 없다.

- 익명 클래스에 정적인 초기화를 선언하거나 정적인 멤버 인터페이스를 선언할 수 없다.

 

표현식 안에서 클래스(익명 클래스)를 정의하여 frenchGreeting이라는 변수를 초기화하는 예제를 보자.

 

https://docs.oracle.com/javase/tutorial/java/javaOO/anonymousclasses.html

 

익명 클래스는 다음으로 이루어져 있다.

 

- new 연산자

- 구현할 인터페이스 또는 상속받은 클래스의 이름

- 생성자의 인자를 담고 있는 괄호

(인터페이스는 생성자가 없기 때문에 익명 클래스가 인터페이스를 구현하는 경우 빈괄호를 써야 한다.)

- 중괄호(body)

(멤버 정의만 가능하다.)

 

지역 클래스와의 비교를 위해 이번에는 지역 클래스 EnglishGreeting을 이용하여 englishGreeting 변수를 초기화하는 예제를 살펴보자.

 

https://docs.oracle.com/javase/tutorial/java/javaOO/anonymousclasses.html

 

 

 

728x90

'프로그래밍 > Java' 카테고리의 다른 글

JAVA Interface Consumer<T>와 람다 표현식  (0) 2020.06.27
JAVA 람다 표현식의 문법과 사용  (0) 2020.06.23
JAVA 지역 클래스(Local Classes)  (0) 2020.05.20
자바 스트림 API  (0) 2020.05.05
JVM 런타임 메모리 영역  (0) 2020.05.02
Comments