익명 클래스란? :
>> 익명클래스란 이름이 없는 클래스로써, 객체의 생성및 정의를 동시에 실시합니다.
생성 조건
>> 익명클래스는 자식 클래스로 부모 클래스 또는, 구현 클래스로 생성한다.
>> 생성 방법으론 new 부모클래스 or 구현인터페이스() { } 이다.
new 부모클래스or구현인터페이스() {
//새롭게 정의할 자식클래스 정의
}
>> 따라서 생성된 익명의 클래스는 부모클래스 타입으로 참조변수에 대입되거나, 구현한 인터페이스의 참조변수에 대입되어 사용된다.
이렇게 생성한 익명 클래스의 접근성은
참조변수 타입이 부모클래스이므로, 익명클래스(자식클래스)에서 생성한 멤버와, 메서드는 사용불가능 하며,
부모클래스의 메서드를 재정의할 경우 재정의된 메서드로 호출이 된다.
=========================================================================================
>> InnerClass 를 매개변수로 하는 callMethodB 에서
c.callMethod를 실행하면 어떻게 실행될지 한번 보자
>> main에서 callMehtodB를 생성호출 할때 매개변수로 InnerClass 를 넣어줘야 하는데
이때 익명 클래스를 생성하여 넣어주었고, 익명 클래스에서 부모 매서드인 callMethod를 재정의 하였다.
실행결과
익명클래스에서 재정의한 "부모의 매서드를 재정의 합니다". 가 출력이 되었다.
============================================================================================
인터페이스인 경우도 동일하다
클래스의 경우 해당 부모클래스를 통해서 익명 클래스를 생성하였듯이
구현한 인터페이스를 통해서 익명 클래스를 생성하고, 인터페이스의 추상 메서드를 재정의 하여 사용한다.
============================================================================================
즉
현재 보면 addActionListener() 의 매개변수로 ActionListener I 가 매개변수로 들어가는데
ActionListener I를 매개 변수로 넣기위해서
>> ActionListener I를 구현한 클래스를 생성한다.
그 후에 ActionListener 를 구현한 클래스를 매개변수로 넣어준다
이렇게 구현하면 매개변수에 넣기위해서 클래스를 생성하고 생성한 클래스를 넣어주는 번거로움이 발생하기 때문에
해당 인터페이스를 구현한 익명의 클래스를 생성해줘서 해당 매개변수로 바로 넣어주는것이다.
>> 말그대로 익명의 클래스로 new ActionListener(){ } 을 통해서
ActionListener를 구현하는 클래스를 생성하였다.
============================================================================================
'dev > JAVA' 카테고리의 다른 글
[JAVA] StandardMultipartHttpServletRequest (0) | 2023.03.11 |
---|---|
[JAVA] 제네릭스 (0) | 2022.06.02 |
[JAVA] 인터페이스의 장점 (0) | 2022.05.31 |
[JAVA] 인터페이스의 다형성 (0) | 2022.05.31 |
[JAVA] 인터페이스 (0) | 2022.05.31 |