📅 [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 | 같은 클래스 접근 가능 | 멤버 |
끝
'📚 학습 기록 > Java 기초 & 중급' 카테고리의 다른 글
🗓️ 학습 일자: 2025.02.08, 2025.02.18📘 코딩 테스트 프로그래머스 : 가까운 수, 숨어있는 숫자의 덧셈, 한번만 등장한 문자 (1) | 2025.02.18 |
---|---|
[25.02.16]Java - 입문 개념 정리 및 자기화: 연산자 (1) | 2025.02.16 |
📅 [25.02.16]Java – 입문 개념 정리 및 자기화 – 변수와 패키지 (1) | 2025.02.16 |
[Java 중급] 지역 클래스와 변수의 생명주기 완벽 정리 (1) | 2025.02.14 |
# 📅 데일리 학습 로그 [2025.02.12] ## 📚 학습 주제[김영한의 자바 중급 -1 섹션 7 날짜와 시간 – AI 이용 예제 풀이 ] (0) | 2025.02.12 |