되자!백엔드개발자
Java(자바) - 익명클래스(annonymous class) 본문
익명클래스(annonymous class)
- 클래스 선언과 객체의 생성을 동시에 하는 클래스이다.
- 생성자도 없이, 오직 하나의 객체만을 생성할 수 있는 일회용 클래스이다.
- 쉽게말해 이름이 정의되지 않은, 조상 클래스를 상속받은 하나의 새로운 class이다.
- 단, 조상 클래스나 인터페이스의 이름을 사용해서 정의하기 때문에
단 하나의 클래스나, 단 하나의 인터페이스만 구현할 수 있다. - 컴파일 후 '외부클래스명 $숫자.class'의 형태로 저장된다.
new 조상클래스이름() { ... }
or
new 구현인터페이스이름() { ... }
아래의 코드를 보자. 코드는 Strabger's LAB 님의 브로그에 [Comparable과 Comparator의 차이] 에서 가져왔다.
public class Anoymous {
public static void main(String[] args) {
Rectangle a = new Rectangle();
// 익명객체 1
Rectangle anonymous1 = new Rectangle() {
@Override
int get() {
return width;
}
};
System.out.println(a.get()); // height = 20
System.out.println(anonymous1.get()); // width = 10
System.out.println(anonymous2.get()); // width * height * depth =6000
}
// 익명객체 2
static Rectangle anonymous2 = new Rectangle() {
int depth = 30;
@Override
int get() {
return width * height * depth;
}
};
}
class Rectangle {
int width =10;
int height = 20;
int get() {
return height;
}
}
위의 코드에서 class가 anonymous로 선언된거 아닌가? 생각이 들 수 있지만
클래스 이름은 정의되지 않고 anonymous라는 이름의 객체로 생성된 것이므로 다르다.
이렇게 클래스 이름으로 정의되지 않는 객체를 익명객체라고 한다.
익명객체의 장점
- 클래스와 마찬가지로 이름만 다르게 하면 몇 개든 자유롭게 생성할 수 있다.
- 클래스를 간단하게 구현하여 가독성이 높아진다.
'개발공부 > JAVA' 카테고리의 다른 글
Java(자바) - Collection: ArrayList (0) | 2022.08.18 |
---|---|
Java(자바) - 컬렉션프레임웍(Collection Framework) (0) | 2022.08.15 |
JAVA(자바) - 추상클래스/인터페이스 (0) | 2022.08.12 |
Java(자바) - Singleton(생성자의 접근제어자) (0) | 2022.08.11 |
Java(자바) - 다형성3(매개변수의 다형성) (0) | 2022.08.11 |