본문 바로가기

Java/본격 Java 기타클래스

[Java] Anonymous란?

자바에서 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