Java

[Java]익명 클래스(Anonymous Class)

MoZZANG 2022. 3. 22. 21:43
익명클래스(Anonymous Class)란?
  • 이름이 없는 클래스
  • GUI프로그래밍 시 주로 사용(이벤트 처리하기 위해서)
  • 부모 클래스의 메소드를 오버라이딩하는 것이 주된 용도이다.
  • 메소드 안에 정의된 클래스
  • 이름이 없어서 부모클래스의 생성자를 빌려서 인스턴스화 한다.

 

익명클래스의 형식은 다음과 같다

▲익명, 말그대로 이름이 없어서 부모클래스의 이름을 빌려서 사용한다.

 

 

 

예제를 보면서 이해해보자.

 

▲먼저 부모가 될 Person클래스를 만들고 맴버변수와 인자생성자 그리고 출력의 편의를 위해 toString까지 오버라이딩 해주었다.

 

 

 

▲이번에는 자식이 될 클래스를 만들고 Person클래스를 상속시켰다. 부모클래스인 Person에 없었던 맴버변수와 메소드를 만들고 인자생성자와 부모의 메소드를 오버라이딩 했다

 

 

▲추가로 추상클래스와 인터페이스도 하나씩 만들었다.

 

 

 

 

 

자 이제는 메인메소드에서 출력을 하면서 보자

 

▲이름이 없기때문에 부모의 클래스명인 Person을 빌려서 { }(중괄호)안에서 새로운 맴버들을 선언해서 사용하거나 부모클래스의 메소드를 오버라이딩해서 사용한다.

 

▲annoy는 이름이 없기 때문에 만들어진 순서에 따라서 이름이 매겨진다. 위 코드 주석에서 보듯이 anony의 이름은 1이다.

▲anony의 출력결과는 위와 같다.

 

 

 

 

▲이번에는 Student 클래스를 부모로하는 익명클래스를 만들었다. 또한 새로운 맴버변수도 확장하고 부모클래스인 Student에 있던 메소드인 get()도 오버라이딩 하였다. 

 

▲ 출력결과는 위와 같다.

 

 

▲ 추상클래스에서도 익명클래스를 사용할 수 있다.

 

 

 

▲인터페이스에서도 익명클래스를 사용할 수 있다.