익명객체
익명 객체는 단독으로 생성할 수 없고, 클래스를 상속하거나 인터페이스를 구현해야만 생성할 수 있다
필드의 초기값이나 로컬 변수의 초기값, 매개 변수의 매개값으로 주로 대입된다.
1. 익명 자식 객체 생성
class A {
//A클래스의 필드 선언
Parent field = new Parent() {
int childField;
void childMethod() { {
//Parent 메소드를 오버라이딩
@Override
void parentMethod() {}
};
익명 자식 객체에 새롭게 정의된 필드와 메서드는 익명 자식 객체 내부에서만 사용되고, 외부에서는 필드와 메소드의 접근할 수 없다.
2. 익명 구현 객체 생성
구현 클래스가 재사용되지 않고, 오로지 해당 필드와 변수의 초기값을 사용하는 경우!!
모든 추상 메소드들의 실체 메소드를 작성해야 한다.
public interface RemoteControl {
public void turnOn();
public void turnOff():
}
public class Anonymous {
//필드 초기값으로 대입
RemoteControl field = new RemoteControl() {
@Override
public void turnOn() {
}
@Override
public void turnOff() {
}
};
void method1(){
//로컬 변수값으로 대입
RemoteControl localVar = new RemoteControl(){
@Override
public void turnOn() {
}
@Override
public void turnOff() {
}
};
//로컬 변수 사용
localVar.turnOn();
}
void method2(RemoteControl rc) {
rc.turnOn();
}
}
public class AnonymousEx {
public static void main(String[] args) {
Anonymous anony = new Anonymous();
//익명 객체 필드 사용
anony.field.turnOn();
//익명 객체 로컬 변수 사용
annony.method1();
//익명 객체 메개값 사용
annoy.method2(
new RemoteControl(){
@Override
void turnOn(){
}
@Override
void turnOff(){
}
}
);
}
}
'JAVA' 카테고리의 다른 글
정적 팩토리 메소드 (static factory method) (0) | 2023.07.26 |
---|---|
[JAVA/개념] 10장 예외처리 (0) | 2023.07.08 |
[JAVA/개념] 11장 기본 API 클래스 (1) | 2023.07.08 |
[JAVA/개념] 인터페이스 (0) | 2023.07.02 |
[JAVA/개념] 상속(extends) (0) | 2023.07.02 |