본문 바로가기

소프트웨어/Android/Java/Ndk

JAVA] 무명클래스란? (Anonymous Class)

무명클래스를 이해하는데 시간이 쫌 걸렸다...

 

 

자바 GUI를 기준으로 설명하겠다.

 

 

//소스1

import java.awt.*;
import java.awt.event.*;

 

class frm extends Frame{

      public frm(){

         addWindowListener( new SubClass() );

      }

     

 

       /*유명클래스로 생성할때,

       클래스내에서 새로운 클래스 생성. 이때, 생성자와는 분리되어야 한다.*/
      class SubClass extends WindowAdapter{
             public void windowClosing(WindowEvent e){//매서드 오버라이딩
                  dispose(); //비저블off
                  System.exit(1);//process exit
             }
       }

}

 

 

위 소스에서 굵은글씨의 아래쪽 클래스는 내부클래스이지만 SubClass라는 이름을 갖는다.

SubClass는 생성후 레퍼런스의 유지가 필요없기 때문에, 굳이 새로운 class를 생성할 필요가 없다.

그래서 SubClass를 이름이 없는 '무명'클래스로 바꿀 수 있다.

 

 

 

//소스2

import java.awt.*;
import java.awt.event.*;

 

class frm extends Frame{

       public frm(){

     

     //윈도리스터를 추가한다        //SuperClass인 윈도어뎁터로부터 확장된 무명class를

     addWindowListener    (     new WindowAdapter() {     

            public void windowClosing(WindowEvent e){ //사용하려는 매소드를 오버라이딩

                   dispose(); System.exit(0);

            }//매소드 오버라이딩 끝

      }//무명class선언 끝

     ); //addWindowListener 매서드 끝. ')'와 ';'를 꼭 찍어야함

 

}

 

위와같은 형태로 바뀌었다.

직접 써가면서 더 느껴야 할 것 같지만, 이렇게 내부 무명클래스로 adapter로 객체를 생성해서쓰면

이벤트처리에 대한 접근이 편해진다고한다.