자바 의 익명 내부 클래스(Anonymous Inner Class)

더 읽 기
-
익명 류,고명 사 의 는 이름 이 없 는 류 다.
이름 이 없 는 클래스 는 다시 인 용 될 수 없 으 며,글 을 쓸 때 즉시 인 스 턴 스 를 생 성 할 수 밖 에 없습니다.
그것 은 보통 코드 작성 을 간소화 하 는 데 쓰 인 다.
익명 내부 클래스 를 사용 하려 면 부모 클래스 를 계승 하거나 인 터 페 이 스 를 실현 해 야 한 다 는 전제 조건 이 있 습 니 다.
일반적인 표기 법:
   
Interface i = new Interface()
{
                           
// this is the anonymous class.
                      
}
;
달라 보 여요?흔히 우리 가 하나의 인 스 턴 스 를 만 들 때 이렇게 쓴다.
   
SomeClass s = new SomeClass();
네.많이 나 오 는{}은 익명 류 입 니 다.
하나의 예:
interface Print{   
	  void print1();   
}   
	  
public class AnonymousInnerClass { 
  
   //1、this method use 'Anonymous Inner Class' .
   public Print dest(){   
       return new Print(){   
                    public void print1(){   
                        System.out.println("Hello world!!");   
	                    }   
	               };   
	}   
	
   //the 'main' method.
	public static void main(String args[]){   
	    AnonymousInnerClass a =  new AnonymousInnerClass();   
	    Print p = a.dest();   
	    p.print1();
	} 
	
	
	
	
}   

/**
 * 
 *           ,         。
 *
 *         ,         :

 ·1:            。  
			             ,         。
			           ,             。
			
 ·2:               、    。
			           。      。
			

  ·3:           new   ,                。 
   
   
 ·4:            (friendly),                 。
			 :        public,protected,private。 


  ·5:                    。
  			           。   ,          。
  
*/







적용:
가장 많이 사용 되 는 상황 은 다 중 스 레 드 의 실현 에 있다.
다 중 스 레 드 를 실현 하려 면 Thread 클래스 를 계승 하거나 Runnable 인 터 페 이 스 를 계승 해 야 하기 때문이다.
스 레 드 클래스 를 계승 하거나 Runnable 인터페이스의 실현 클래스 를 계승 할 필요 가 없습니다.
Thread 클래스 의 익명 내부 클래스 구현
public class Demo {
    public static void main(String[] args) {
        Thread t = new Thread() {
            public void run() {
                for (int i = 1; i <= 5; i++) {
                    System.out.print(i + " ");
                }
            }
        };
        t.start();
    }
}
//    :1 2 3 4 5

Runnable 인터페이스의 익명 내부 클래스 구현
public class Demo {
    public static void main(String[] args) {
        Runnable r = new Runnable() {
            public void run() {
                for (int i = 1; i <= 5; i++) {
                    System.out.print(i + " ");
                }
            }
        };
        Thread t = new Thread(r);
        t.start();
    }
}
//    :1 2 3 4 5

참조:
http://www.cnblogs.com/PatrickLee/archive/2012/08/22/2650971.html
http://www.cnblogs.com/nerxious/archive/2013/01/25/2876489.html

좋은 웹페이지 즐겨찾기