자바에서 anonymous란 클래스를 따로 만들지 않고
프로그램 만드는 과정중에서 클래스처럼 메소드를 선언할 수 있다.
.
.
상위클래스를 작성해보자
.
.
package Anonymous;
// 부모 클래스로 사용할 클래스
public class Person {
void wakeup() {
System.out.println("7시에 일어납니다.");
}
}
.
.
그리고 하위클래스를 작성해준다.
.
.
package Anonymous;
// 익명의 클래스를 사용
public class Anonymous {
// 필드의 초기값으로 대입하는 익명의 클래스
Person field = new Person() {
void work() {
System.out.println("출근합니다.");
}
@Override
void wakeup() {
System.out.println("6시에 일어납니다.");
work();
}
};
void method1() {
// 로컬변수의 값으로 대입
Person local = new Person() {
void work() {
System.out.println("산책하러 갑니다.");
}
@Override
void wakeup() {
System.out.println("8시에 일어납니다.");
work();
}
};
local.wakeup();
}
// 메소드의 매개변수로 익명의 클래스 사용
void method2(Person person) {
person.wakeup();
}
}
.
.
따로 상속받지 않고 객체로 만들어서 만들었다.
그리고 상위클래스에 있는 메소드를 오버라이딩해서 다시 만든다.
.
.
그리고 메인클래스에서 하위클래스에서 오버라이딩했던 것처럼 상위클래스의 메소드를 오버라이딩 할 수 있는지 알아보자
.
.
package Anonymous;
public class AnonymousTest {
public static void main(String[] args) {
Anonymous e = new Anonymous();
e.field.wakeup();
e.method1();
e.method2(new Person() {
void study() {
System.out.println("공부합니다.");
}
@Override
void wakeup() {
System.out.println("5시에 일어납니다.");
study();
}
});
}
}
.
.
.
.
메인클래스에서 클래스처럼 만든 것도 사용 가능하다는 것을 볼 수 있다.
728x90
반응형
'Java > 본격 Java 기타클래스' 카테고리의 다른 글
[Java] 예외처리 실습 (0) | 2020.07.15 |
---|---|
[Java] Anonymous의 활용법 (0) | 2020.07.15 |
[Java] StringTokenizer 클래스 (0) | 2020.07.02 |
[Java] 랜덤 클래스 - 로또 번호 만들기 (0) | 2020.07.02 |
[Java] Math 클래스 (0) | 2020.07.02 |