본문 바로가기
Programming/JAVA(eclipse)

java 10 일차 _ 03. 익명클래스

by yoon9i 2024. 3. 21.

2. 익명 클래스( annoymous class, 이름없는 클래스 ) ==> 람다표현식

1) 중첩클래스 범주에 속함.
2) 용도: 인터페이스( interface ) 사용할 때 익명클래스를 적용할 수 있다.
3) 문법: 
ex)
public interface Flyer {
   
    public abstract void fly( );

}

// 1. 일반적인 방법 ( 이름있는 클래스 이용 )
       가. 하위클래스 작성
public class Bird implements Flyer {
   @Override
   public void fly( ) {

   }
}
       
       나. 하위클래스 객체생성
Bird b = new Bird( );
b.fly( );
// 다형성 적용
Flyer b2 = new Bird( );
b2.fly( );


// 2. 익명 클래스 ( 이름없는 클래스 이용 )
       문법:   인터페이스명   변수명  = new 인터페이스명( ) {
         // 추상메서드 재정의
   };
   변수명.메서드( );

Flyer f = new Flyer( ) {
   @Override
   public void fly( ) {

   }
};
f.fly( );

 

package exam17_중첩클래스;

// interface
interface Flyer {
	public abstract void fly();
}

// 1. 일반적인방법 ( 이름있는 클래스 이용 )
class Bird implements Flyer {

	@Override
	public void fly() {
		System.out.println("Bird.fly() 호출");
	}

}

public class TestMain6_AnonymousInnerClass {
	public static void main(String[] args) {

		// 1. 일반적인 방법 ( 이름있는 클래스 이용 )
		Flyer b = new Bird(); // 다형성
		b.fly();

		// 2. 익명클래스 ( * )
		Flyer f = new Flyer() {
			@Override
			public void fly() {
				System.out.println("익명클래스: Flyer.fly() 호출");
			}
		};
		f.fly();
		
		// Flyer f2 = new + ctrl + space ( 이클립스 단축코드 )
		Flyer f2 = new Flyer() {
			
			@Override
			public void fly() {
				System.out.println("익명클래스: Flyer.fly() 호출(2)");
			}
		};
		f2.fly();
		
	}// end main
}// end class