익명클래스(Anonymous Class)란?
- 이름이 없는 클래스
- GUI프로그래밍 시 주로 사용(이벤트 처리하기 위해서)
- 부모 클래스의 메소드를 오버라이딩하는 것이 주된 용도이다.
- 메소드 안에 정의된 클래스
- 이름이 없어서 부모클래스의 생성자를 빌려서 인스턴스화 한다.
익명클래스의 형식은 다음과 같다
▲익명, 말그대로 이름이 없어서 부모클래스의 이름을 빌려서 사용한다.
예제를 보면서 이해해보자.
▲먼저 부모가 될 Person클래스를 만들고 맴버변수와 인자생성자 그리고 출력의 편의를 위해 toString까지 오버라이딩 해주었다.
▲이번에는 자식이 될 클래스를 만들고 Person클래스를 상속시켰다. 부모클래스인 Person에 없었던 맴버변수와 메소드를 만들고 인자생성자와 부모의 메소드를 오버라이딩 했다
▲추가로 추상클래스와 인터페이스도 하나씩 만들었다.
자 이제는 메인메소드에서 출력을 하면서 보자
▲이름이 없기때문에 부모의 클래스명인 Person을 빌려서 { }(중괄호)안에서 새로운 맴버들을 선언해서 사용하거나 부모클래스의 메소드를 오버라이딩해서 사용한다.
▲annoy는 이름이 없기 때문에 만들어진 순서에 따라서 이름이 매겨진다. 위 코드 주석에서 보듯이 anony의 이름은 1이다.
▲anony의 출력결과는 위와 같다.
▲이번에는 Student 클래스를 부모로하는 익명클래스를 만들었다. 또한 새로운 맴버변수도 확장하고 부모클래스인 Student에 있던 메소드인 get()도 오버라이딩 하였다.
▲ 출력결과는 위와 같다.
▲ 추상클래스에서도 익명클래스를 사용할 수 있다.
▲인터페이스에서도 익명클래스를 사용할 수 있다.
'Java' 카테고리의 다른 글
[Java]입력과 출력(Input and Output) - part.1 Basic (0) | 2022.03.23 |
---|---|
[Java]Thread (0) | 2022.03.22 |
[Java]Builder pattern (0) | 2022.03.22 |
[Java]내부클래스 - part.2 내부 정적 클래스 (0) | 2022.03.22 |
[Java]내부클래스 - part.1 내부 맴버 클래스 (0) | 2022.03.22 |