반응형
익명(anonymous) 객체는 이름이 없는 객체를 말한다.
익명 자식 객체 생성
기본적으로 사용하는 방식
class Child extends Parent { }
class A{
Parent filed = new Child(); // 필드에 자식 객체를 대입
void method(){
Parent localVar = new Child(); // 로컬 변수에 자식 객체를 대입
}
}
자식 클래스가 재사용되지 않고, 오로지 해당 필드와 변수의 초기값으로만 사용할 경우라면 익명 자식 객체를 생성해서 초기값으로 대입하는 것이 좋은 방법이다.
부모클래스 [필드|변수] = new 부모클래스("매개값", "..."){
// 필드
// 메소드
};
Person.java
package anonymous;
public class Person {
void wake(){
System.out.println("7시 30분에 일어납니다.");
}
}
Anonymous.java
package anonymous;
public class Anonymous {
// 필드 초기값으로 대입
Person field = new Person(){
void work(){
System.out.println("출근을 한다.");
}
@Override
void wake() {
System.out.println("6시에 일어납니다.");
work();
}
};
void method1(){
// 로컬 변수값으로 대입
Person localVer = new Person(){
void walk(){
System.out.println("산책합니다.");
}
@Override
void wake() {
System.out.println("7시에 일어납니다.");
walk();
}
};
// 로컬 변수 사용
localVer.wake();
}
void method2(Person person){
person.wake();
}
}
AnonymousExample.java
package anonymous;
public class AnonymousExample {
public static void main(String[] args) {
Anonymous anony = new Anonymous();
// 익명 객체 필드 사용
anony.field.wake();
// 익명 객체 로컬 변수 사용
anony.method1();
// 익명 객체 매개값 사용
anony.method2(new Person(){
void study(){
System.out.println("공부합니다.");
}
@Override
void wake() {
System.out.println("8시에 일어납니다.");
study();
}
});
}
}
6시에 일어납니다.
출근을 한다.
7시에 일어납니다.
산책합니다.
8시에 일어납니다.
공부합니다.
반응형
'프로그래밍 노트 > JAVA' 카테고리의 다른 글
[JAVA] String 객체와 리터럴 (메모리관련) (2) | 2019.04.23 |
---|---|
[JAVA] 익명객체_익명 구현 객체 생성 (0) | 2019.04.15 |
[JAVA] 람다식 클래스 멤버와 로컬 변수 사용 (0) | 2019.04.15 |
[JAVA] 람다식 함수적 인터페이스 (0) | 2019.04.02 |
[JAVA] 람다식이란? (1) | 2019.03.28 |