익명클래스 익명객체는 이름이 없는 객체를 말한다. 이는 단독으로 생성할 수 없고 클래스를 상속하거나 인터페이스를 구현해야만 생성할 수 있다. UI 이벤트 처리 객체나 스레드 객체를 간편하게 생성할 목적으로 많이 활용된다. 익명클래스는 생성자를 선언할 수 없다는 특징이 있으며 클래스가 재사용되지 않을 때 사용하는것이 좋다. 익명 자식 객체에 새롭게 정의된 필드와 메소드는 익명자식 객체 내부에서만 사용되고, 외부에서는 필드와 메소드에 접근할 수 없다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 public class Person { void wake ( ) { System.out.println("7시 인남" ); } } public class Annoymous { Person field = new Person () { void work ( ) { System.out.println("출근~" ); } @Override void wake ( ) { System.out.println("6시 인남" ); work( ); } }; void method1 ( ) { Person localVar = new Person ( ) { void walk ( ) { System.out.println("산책 고고" ); } @Override void wake ( ) { System.out.println("7시에 인남" ); walk( ); } }; localVar.wake( ); } void method2 (Person person) { person.wake(); } }
위에 정의한 클래스를 활용해보자
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 public class AnonymousExample { public static void main (String[] args) { Anoymous anony = new Anonymous (); anony.field.wake(); anony.method1(); anony.method2( new Person ( ) { void study ( ) { System.out.println("공부~" ); } @Override void wake ( ) { System.out.println("8시에인남" ); study( ); } } ); } }