코딩공부/자바
자바의 정석 - 자바의 열두 번째 이야기, 객체지향(8)
에반셀린
2023. 3. 9. 21:22
*이 글은 개인적인 공부/기록 목적으로 올립니다.
부족하다고 느껴질 수 있는 글이니 양해 부탁드립니다.*
참고도서
http://www.yes24.com/Product/Goods/24259565
Java의 정석 - YES24
최근 7년동안 자바 분야의 베스트 셀러 1위를 지켜온 `자바의 정석`의 최신판. 저자가 카페에서 12년간 직접 독자들에게 답변을 해오면서 초보자가 어려워하는 부분을 잘 파악하고 쓴 책. 뿐만 아
www.yes24.com
■ 내부 클래스(inner class)
내부 클래스란 클래스 안에 선언된 클래스를 말하는데
특정 클래스 내에서만 사용되는 클래스를 내부 클래스로 선언한다.
주로 GUI 애플리케이션의 이벤트 처리에 주로 사용된다.
// 일반적인 클래스
class A {
...
}
class B {
...
}
// 내부 클래스
class A {
...
class B {
...
}
...
}
내부 클래스는 내부 클래스에서 외부 클래스의 멤버들을 쉽게 접근할 수 있으며,
코드의 복잡성을 줄일 수 있다. 이 말은 캡슐화가 가능하다는 얘기이다.
■ 내부 클래스의 종류와 특징
내부 클래스의 종류는 변수의 선언 위치에 따른 종류와 동일한데
유효 범위와 성질도 변수와 유사하므로 비교해보면 이해하기 쉽다.
내부 클래스 | 특 징 |
인스턴스 클래스 (instance class) |
외부 클래스의 멤버 변수 선언 위치에 선언하며, 외부 클래스의 인스턴스 멤버처럼 다루어 지는데 주로 외부 클래스의 인스턴스 멤버들과 관련된 작업에 사용될 목적으로 선언된다. |
정적 클래스 (static class) |
외부 클래스의 멤버 변수 선언 위치에 선언하며, 외부 클래스의 static 멤버처럼 다루어 지는데 주로 외부 클래스의 static 멤버, 특히 static 메서드에서 사용될 목적으로 선언된다. |
지역 클래스 (local class) |
외부 클래스의 메서드나 초기화 블럭 안에 선언하며, 선언된 영역 내부에서만 사용될 수 있다. |
익명 클래스 (anonymous class) |
클래스의 선언과 객체의 생성을 동시에 하는 이름없는 클래스이다.(일회성) 단 하나의 객체만을 생성할 수 있다. |
내부 클래스의 접근 제어자와 접근성에 대해 설명하자면,
- 내부 클래스의 접근 제어자는 변수에 사용할 수 있는 접근 제어자와 동일하다.
- static 클래스만 static 멤버를 정의할 수 있다.
- 내부 클래스도 외부 클래스의 멤버로 간주되며, 동일한 접근성을 갖는다.
- 외부 클래스의 지역 변수는 final이 붙은 변수(상수)만 접근 가능하며,
지역 클래스의 인스턴스가 소멸된 지역 변수를 참조할 수 있기 때문이다.