Skip to content

Commit be87b43

Browse files
authored
[아이템 24] 멤버 클래스는 되도록 static으로 만들라
1 parent c4f4977 commit be87b43

1 file changed

Lines changed: 24 additions & 0 deletions

File tree

chapter04/item24/item24.md

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
# 멤버 클래스는 되도록 static으로 만들라
2+
3+
- 중첩 클래스 nested class는 자신을 감싼 바깥 클래스에서만 쓰여아한다.
4+
- 중첩 클래스 종류
5+
1. 정적 멤버 클래스
6+
2. 비정적 멤버 클래스
7+
3. 익명 클래스
8+
4. 지역 클래스
9+
10+
## 어느 경우에 정적, 비정적 멤버 클래스를 사용할까
11+
- **바깥 인스턴스를 참조**하냐 안하냐의 차이
12+
- `Iterator`, `Adaptor`는 바깥 인스턴스를 참조해야지만 쓸모가 있는 클래스
13+
- 그러므로 비정적 클래스로!
14+
- `Entry``Map` 내부에 있지만, `Map` 정보에 대해 알 필요 없음 --> 그래서 Enty는 정적 멤버 클래스로 가능
15+
- 반면 `Iterator`들은 바깥 인스턴스 정보를 알아야 하니까.. --> 비정적 클래스
16+
- 다시 말해, 정적 클래스의 경우 새로운 탑클래스로 분리 가능하다 (바깥 클래스를 참조하고 있지 않기 때문에)
17+
- 반면 비정적 클래스의 경우, 바깥 클래스를 참조하고 있는 경우, 새로운 탑 클래스로 분리하는 게 어렵거나 불가능하다. -> 그러므로 해당 클래스 내부에 존재하도록 만들어야 한다.
18+
19+
# QnA
20+
- 예제코드 --> https://javabom.tistory.com/46
21+
- 좀 더 알아보면 좋을 내용들
22+
1. Map.Entry Interface의 목적과 사용에 대해
23+
2. 위 예제 코드를 통해 각각 클래스가 어떤 것인지 알면 좋을듯.
24+
3. 비정적 멤버 클래스의 경우 접근제한자가 public, protected로 설정하는 경우도 있을까?

0 commit comments

Comments
 (0)