익명 클래스

Jimin·2022년 8월 6일
0

JAVA

목록 보기
4/30

익명객체(익명클래스)란?

  • 말 그래도 이름이 없는 객체, 클래스 이다.

익명객체(익명클래스)를 사용하는 이유?!

  1. 프로그램 내에서 일시적으로(단발성으로) 한 번만 사용되어야 하는 객체일 경우
    → UI 이벤트 처리, 스레드 객체, ...(단발성 이벤트 처리)
  2. 재사용성이 없고, 확장성을 활용하는 것이 유지보수에서 더 불리한 경우

내멋대로 정리하자면, 굳이 한 번만 쓰고 버릴 클래스인데 그 많고 많은 여러 클래스중에 굳이 또 하나의 클래스를 새로 정의하여 늘릴 필요가 없다는 것이다.
그냥 한 번 사용하고 버리는 클래스인 것이다.

  • 이름이 없다 = 기억되지 않아도 된다, 나중에 다시 불러질 이유가 없다.
  • 즉, 익명 객체는 프로그램에서 일시적으로 한 번만 사용되고 버려지는 객체이다.
  • 일시적으로 사용된다는 것은 재사용이 되지 않는다는 것을 의미하는데, 이는 확장성이 그렇게 좋지 못하다는 의미이다.

익명객체(익명클래스) 구현 방법

  • 익명 객체(클래스)를 구현하는 방법은 크게 2가지가 있다.
    • 부모/자식간 상속 아래 익명 자식 객체를 생성할 것인가?
    • 아니면, 인터페이스를 구현한 익명 구현객체를 생성할 것인가?

1. 익명 자식객체

  1. 필드의 초기값
  2. 로컬변수의 초기값
  3. 매개변수의 매개값
부모클래스 [필드|변수] = new 부모클래스(매개값, ... ) {

};
  • 예시
public class Anonymous {

	//★★방법 1 : 필드에 익명자식 객체를 생성 
	Insect spider1 = new Insect(){
		
		String name = "무당거미";
		//거미줄을 치다.
		void cobweb(){
			System.out.println("사각형으로 거미줄을 친다.");
		}
		
		@Override
		void attack() {
			System.out.println(name + " 독을 발사한다.");
		}
	};
	
	//★★방법2 : 로컬변수의 초기값으로 대입
	void method1(){
		Insect spider2 = new Insect(){
			
			String name = "늑대거미";
			//거미줄을 치다.
			void cobweb(){
				System.out.println("육각형으로 거미줄을 친다.");
			}
			
			@Override
			void attack() {
				System.out.println(name + " 앞니로 문다.");
			}
		};
		
		//로컬변수이기 때문에 메서드에서 바로 사용
		spider2.attack();
	}
	
	//★★방법3 : 익명객체 매개변수로 대입
	void method2(Insect spider){
		spider.attack();
	}
	
	
}

2. 익명 구현객체

  • 익명 구현객체란?
    인터페이스를 바탕으로 익명클래스(익명객체)를 구현할 수 있다.
  • 일반 상속 익명 객체와 다른 점은 상속과 다르게 인터페이스는 강제로 무조건 정의를 통해 사용해야하는 메서드가 있기 때문에 규격화에 도움이 된다.
profile
https://github.com/Dingadung

0개의 댓글