15. JAVA의 내부클래스, 익명클래스(Anonymous inner class)
내부 클래스(Inner Class)
내부클래스는 클래스 내에 선언된 클래스 입니다.
클래스에 다른 클래스를 선언하는 이유는 두 클래스가 긴밀한 관계에 있기 때문입니다.
※ 메소드 안에서 클래스를 선언할 수도 있습니다.
내부클래스의 장점
▶ 외부 클래스가 메모리에 할당 되어야 내부 클래스를
객체화 할 수 있기 때문에 클래스를 숨기기 위해서 내부 클래스를 사용합니다. (캡슐화)
▶ 내부 클래스는 외부 클래스의 필드이기 때문에 외부 클래스의 필드를 자신의 필드처럼 가져다 사용할 수 있게 된다.
내부클래스는 모바일이나 GUI애플리케이션에서 많이 사용되지만 웹에서는 잘 사용되지 않습니다.
내부클래스 사용 예제
외부클래스내에 내부클래스가 선언되었고, 메소드 내에서도 내부클래스가 사용될 수 있습니다.
In클래스를 사용하기 위해서는 먼저 Out클래스에 접근하여 주소를 얻어낸후에 접근을 해야합니다.
익명 클래스(Anonymous inner class)
이름이 없는 클래스이며 구현되지 않은 필드를 구현하기 위해 일회성으로 생성되는 클래스입니다.
익명 클래스를 사용하는 가장 큰 목적은 부모 클래스를 상속받는 서브 클래스를 생성하지 않고도, 단일 객체를 만들어서 부모 클래스에 정의된 동작에서 행위를 추가할 수 있다는 것입니다.
사용 형식은 다음과 같습니다.
부모클래스 인스턴스 = new 부모클래스() {
///부모클래스 메소드 오버라이드
};
익명 클래스 사용 예시
Animal 인터페이스가 있습니다.
인터페이스를 클래스에서 (implements)구현하여 사용해야 하지만 익명클래스를 이용하면
implements 나 extends를 사용하지 않고도 바로 객체에 접근하여 추상메소드를 구현하여 사용할 수 있습니다.
이상으로 내부클래스와 익명클래스에 대해 알아보았습니다.
'KoreaIt Academy > JAVA' 카테고리의 다른 글
17. JAVA의 람다식(Lambda Expression) , 메소드 참조 (0) | 2021.07.22 |
---|---|
16. JAVA의 API, 외부 API를 이용하여 문자보내기 (2) | 2021.07.21 |
14. JAVA의 인터페이스(Interface), Adapter, 마커인터페이스, 모호성 (0) | 2021.07.19 |
13. JAVA의 추상클래스(abstract class) (0) | 2021.07.19 |
12. JAVA의 UpCasting(업캐스팅), DownCasting(다운캐스팅), instanceof (0) | 2021.07.18 |
댓글