1. 익명?
익명이란 말 그대로 이름이 없는 객체이다.
그래서 무명 클래스라고 부르기도 한다.
이 게시물에서는 인터페이스 안에서 사용되는 익명 내부 객체에 대해 알아보려 한다.
우선 익명을 이해하기 위해서는 이름이 없는 이유에 대해 생각해보아야 한다.
왜 이름이 없을까?
기억될 필요가 없다는 뜻이다.
즉, 다시 불러질 이유가 없는 일시적으로 한번만 사용되고 버려지는 객체라는 뜻이다.
만약 우리가 프로그래밍을 하는데, 단 한번만 사용될 목적의 코드인데 10만개의 데이터가 입력이 되어야한다면 어떻게 할까?
10만개의 클래스를 만들어 딱 한번만 사용하고 버릴까?
이럴 때 사용되는 것이 바로 익명 객체인 것이다.
이러한 익명 객체는 모바일 응용앱, JavaScript, jQuery 등에서 많이 사용된다
이제 익명 객체를 만드는 문법에 대해 알아보자.
2. 익명 객체 문법
익명 객체(클래스)를 구현하는 방법은 크게 2가지가 있고, 그 안에서도 여러 방법으로 나뉜다.
- 부모 / 자식간 상속 아래에 익명 자식객체를 생성하는 방법
- 인터페이스를 구현한 익명 구현객체를 생성하는 방법
하지만 이번에는 인터페이스 안에서 주로 사용되는 익명 객체 문법 딱 한가지만 알아보려 한다.
코드를 작성해가면서 알아보자.
우선 클래스와 인터페이스부터 만들었다.
interface IMessage{
public void msgPrint(); // 추상메소드
} // interface end
class Message implements IMessage{
@Override
public void msgPrint() {
System.out.println("Message 클래스");
}
} // class end
객체를 생성할 때는 아래와 같은 형식으로 생성이 된다.
// [상속]
class 클래스이름1 extends 부모클래스 { ...}
부모클래스 변수 = new 클래스이름1();
// [구현]
class 클래스이름2 extends 인터페이스 { ...}
인터페이스 변수 = new 클래스이름2();
하지만 익명 객체를 생성할 때는 다음과 같이 클래스 이름이 따로 없다.
그리고 하나의 실행문(한번 실행하면 끝)이기 때문에 끝에는 세미콜론(;)을 반드시 붙여야 한다.
// 상속
부모클래스 [필드|변수] = new 부모클래스(매개값, ...) {
// 필드
// 메소드
};
// 구현
인터페이스 [필드|변수] = new 인터페이스() {
// 인터페이스에 선언된 추상 메소드의 실체 메소드 선언
// 필드
// 메소드
};
IMessage mess = new IMessage() {
@Override
public void msgPrint() {
}
};
원래 IMessage는 인터페이스이기 때문에 new로 선언할 수가 없다.
하지만 {}를 붙인 뒤 Message 클래스의 msgPrint 메서드를 오버라이드 하면 익명 객체로 사용할 수가 있다.
'⁂ Java > : 기본 익히기' 카테고리의 다른 글
[JAVA] #9-1 예외처리(Exception) 1 - try...catch...finally (0) | 2022.09.16 |
---|---|
[JAVA] #8-6 이너 클래스(Inner Class) (0) | 2022.09.15 |
[JAVA] #8-4 인터페이스(Interface) (0) | 2022.09.15 |
[JAVA] #8-3 추상(Abstract) (0) | 2022.09.15 |
[JAVA] #8-2 다형성(Polymorphism) (0) | 2022.09.15 |