일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- lambda
- exception
- FunctionalInterfaces
- gradle
- java
- 프록시
- 링킹
- DispatcherServlet
- ApplicationContext
- IOC
- 토비의스프링3.1
- 클린코드
- AutoConfiguration
- 빌드툴
- hibernate
- springboot
- 링커
- Immutable
- springwebmvc
- Spring
- 메이븐
- 컴퓨터시스템
- DesignPattern
- Kotlin for Java Developers
- 토비의스프링
- beanfactory
- String
- ORM
- 자바
- JPA
- Today
- Total
엔지니어로 가는 길
JAVA 익명 클래스(Anonymous Classes) 본문
출처: https://docs.oracle.com/javase/tutorial/java/javaOO/anonymousclasses.html
익명 클래스
- 익명 클래스를 사용하면 코드를 더 간결하게 만들 수 있다.
- 익명 클래스는 정의되는 동시에 객체가 생성된다.
- 이름이 없다는 점을 빼면 지역 클래스와 유사하다.
(지역 클래스를 한 번만 사용하면 되는 경우라면 익명 클래스를 사용하라.)
- 익명 클래스는 자신을 포함하는 외부 클래스(이하 enclosing class)의 멤버에 접근할 수 있다.
(final 또는 유사 final로 선언된 변수에만 접근할 수 있다.)
(지역 클래스에서도 final 변수 또는 유사 final로 선언된 변수에만 접근할 수 있는 것 같다.)
- 중첩 클래스와 마찬가지로 익명 클래스의 변수는 같은 이름을 가진 enclosing class의 변수를 가린다.
익명 클래스 문법
- 익명 클래스는 표현식이다.
(따라서 반드시 statement의 일부여야 하며, 중괄호 뒤에 세미콜론이 붙어야 한다,)
- 익명 클래스의 문법은 클래스를 정의하는 블록이 있다는 점을 제외하면 생성자 호출과 같다.
- 익명 클래스에 필드와 메소드, 지역 클래스를 선언할 수 있지만 생성자는 선언할 수 없다.
- 익명 클래스에 정적인 초기화를 선언하거나 정적인 멤버 인터페이스를 선언할 수 없다.
표현식 안에서 클래스(익명 클래스)를 정의하여 frenchGreeting이라는 변수를 초기화하는 예제를 보자.
익명 클래스는 다음으로 이루어져 있다.
- new 연산자
- 구현할 인터페이스 또는 상속받은 클래스의 이름
- 생성자의 인자를 담고 있는 괄호
(인터페이스는 생성자가 없기 때문에 익명 클래스가 인터페이스를 구현하는 경우 빈괄호를 써야 한다.)
- 중괄호(body)
(멤버 정의만 가능하다.)
지역 클래스와의 비교를 위해 이번에는 지역 클래스 EnglishGreeting을 이용하여 englishGreeting 변수를 초기화하는 예제를 살펴보자.
'프로그래밍 > 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 |