📚 학습 기록/Java 기초 & 중급

📅 [2025-02-13] 📚 [김영한의 자바 중급 -1 섹션 8 중첩 클래스, 내부 클래스 1 ]

zenjoydev 2025. 2. 13. 22:49

https://github.com/getplay0131/-BE-25.02.13_Java_Progress/tree/master/mid1/src/Progress_250213/nested

📅 [2025-02-13]

 

📚 [김영한의 자바 중급 -1 섹션 8 중첩 클래스, 내부 클래스 1  ]

 

난이도: ⭐⭐⭐☆☆

 

🔑 핵심 개념

- [ 명확성 ]

- [ 중첩 클래스 ]

  - [ 내부 클래스 vs 정적 중첩 클래스 ]

- [ 내부 클래스의 사용 상황과 사용 이유  ]

 

💡 언어로 정리

[

l  중첩 클래스

l  클래스 안에 클래스를 정의하는 것.

l  Non-static

l  내부 클래스

l  외부 클래스를 구성하는 요소

l  내가 소유하거나, 나를 이루는 요소

l  종류 : 내부, 지역, 익명 클래스.

l  내부 클래스

l  접근 제어자 없음

l  외부 클래스의 멤버에 접근 가능

l  외부 클래스의 참조값을 보관

l  지역 클래스

l  내부 클래스의 특징 + 지역 변수에 접근 가능

l  익명 클래스

l  지역 클래스 특징 + 클래스의 이름 없음

l  Static

l  정적 중첩 클래스

l  외부 클래스에 속하지 않는 별도의 클래스

l  Ex) 내 물건은 아니지만 물건을 빌린 상황

l  사용 상황

l  이미 중첩 클래스가 있거나, 외부와 내부 클래스와 아주 긴밀한 연결이 되어있는 경우

l  외부의 클래스들이 특정 중첩 클래스를 사용한다면 절대 사용 금지

l  사용 이유

l  논리적인 그룹화

l  클래스를 노출하지 않고 중첩 시켜서 그룹화 가능

l  클래스 안에서의 기능으로만 필요시

l  캡슐화

l  외부 클래스의 멤버에 상시 접근이 가능하며 이로 인해 긴밀한 관계가 형성

l  접근 방법

l  중첩 클래스 : 외부 클래스.중첩 클래스 or 중첩 클래스

l  내부 클래스 : 외부클래스 인스턴스 참조.중첩 클래스

l  중첩 클래스의 사용시 주의 사항

l  외부 클래스가 아닌 다른 클래스에서 중첩 클래스를 사용한다면, 밖으로 이동하는 것이 더 좋다.

l  중첩 클래스의 용도에 부적합

l  범위별 동일한 변수명

l  보통 가까운 순대로 우선순위가 높다

l  이로 인해 우선순위가 낮은 변수가 가려지는 것섀도잉(Shadowing) 이라 한다.

l  그러므로 명확성을 사용하여 변수명 작명하기!

]

 

⚙️ 주요 문법 & 구현 방법

[내부 클래스]

Class Outer{

           Class Inner {

}

}

```

 

```

[정적 중첩 클래스]

Class Outer{

           static class Inner {

}

}

```

 

🤔 질문 & 더 알아볼 점

- [static큰 사람!, non-static작은 사람!]

- [내부 클래스의 종류!]

 

📊 오늘의 진도

- [0] [김영한의 자바 중급 -1 섹션 8 중첩 클래스, 내부 클래스 1]

- [x] [리마인드 필기]

 

## 📌 다음 학습 계획

- [김영한의 자바 중급 -1 섹션 9 중첩 클래스, 내부 클래스 2 일부]

 

## 🗒 추가 노트

접근 제어자 외부 호출 범위; 제어 대상
Public 클래스에 오픈 마인드 클래스, 멤버
Default (package-private) 같은 패키지에 오픈 마인드 클래스, 멤버
Protected 같은 패키지 + 자식 클래스 멤버
Private 같은 클래스 접근 가능 멤버