2011년 5월 10일 화요일

자바의 익명클래스(Anonymous classes)

자바의 비정적 내부클래스의 일종인 익명클래스에 대해서 공부하는 시간을 갖기로 하겠다. 익명클래스는 말에서 풍기듯 이름이 없는 클래스를 말한다. 익명클래스는 객체를 생성하는 문장 { }; 안에 재정의할 메소드를 오버라이드해서 적어주면 되고 끝낼때는 괄호 닫을때 }; 세미콜론을 반드시 붙여주어야 한다. 쓰는 방식은 아래와 같다.

클래스명 인스턴스명 = new 클래스명( )
{
   ...//원하는 메소드를 오버라이드해서 재정의한다.
};

여기서 클래스명은 재정의할 메소드가 있는 곳의 해당 클래스를 말하는 것이니 오해없기 바란다. 객체생성 한두번 해본거 아니잖냐? ㅎㅎ 익명클래스는 메소드를 오버라이드해서 사용하므로 오버라이드 규칙에 따라서 사용하면 되고 익명클래스안의 메소드를 사용하려면 해당 인스턴스명을 통해야 한다. 익명클래스는 오버라이드에 대해서 알아야하므로 자바의 상속에 대해서 열심히 공부한 이들은 내용의 반은 먹고 들어가는게 익명클래스다. 기억이 안나면 예전 강좌를 찾아보기 바란다. 자바코드 보면서 혹시 세미콜론이 }; 괄호 다음에 붙어있는걸 보고 고개를 갸우뚱한적이 있는지 모르겠다. 소스가 잘못된게 아니고 바로 익명클래스를 쓴것인데 쓰기가 간편해서 구조가 간단한 클래스나 GUI 환경의 이벤트 구문에서 상당히 많이 쓰이는 것이 익명클래스이니 어떻게 쓰는지 이번 시간을 통해 꼭 숙지하기 바란다.


클래스명$번호.class

익명클래스는 컴파일하면 내부클래스이므로 일단 $ 표시가 붙고 그 다음에 갯수에 따라 숫자가 위와같이 붙는다. 아직까지는 익명클래스에 대해 어떻게 쓰는지 불확실할 것이다. 상속을 받아 재정의하고 객체를 만들고 이런 과정을 축약시켜 놓은게 익명클래스라고 생각하면 된다. 익명클래스야말로 백문이 불여일견이다. 일단 보면 안다. 무엇을? 예제를 말이다. 여기를 누르고 예제를 공부해 보면 쉽게 이해가 될것이다. 예제를 응용하면서 연습 많이 해보기 바란다.^^

익명클래스안에 있는 f()
i'm g()
i'm f()
=====강이의 자바강좌=====
익명클래스안에 있는 h()
익명클래스안에 있는 i()

댓글 5개:

  1. whoah this blog is great i really like studying your
    posts. Stay up the good work! You know, many people are looking round for this information, you
    could help them greatly.

    Visit my webpage: new cellulite treatment

    답글삭제
  2. 익명 클래스 이면서 객체 생성도 하면서 흠 .ㅅ.~

    실행 우선순위는 익명 클래스가 우선 이군요

    답글삭제
  3. 좋은 강의 잘 보았습니다

    답글삭제