- 중첩 클래스의 종류
- 코틀린의 중첩 클래스와 내부 클래스
| - (자바) 중첩 클래스 중 권장되는 클래스는 static을 사용하는 클래스이며 - 코틀린에서는 권장되는 중첩 클래스를 사용하기 위해 기본적으로 바깥 클래스에 대한 참조가 없으며 - 바깥 클래스를 참조하고 싶으면 『inner 키워드 + this@바깥클래스』를 사용해야 한다. |
1 . 중첩 클래스의 종류
| ① static을 사용 | static을 사용하지 않음 | ||
| ② 내부 클래스 | ③ 지역 클래스 | ④ 익명 클래스 | |
① 클래스 안에 static을 붙인 클래스, 밖의 클래스 직접 참조 불
② 클래스 안에 클래스, 밖의 클래스를 직접 참조
③ 매서드 내부에 클래스를 정의
④ 일회성 클래스
→ 보통 중첩 클래스(클래스 안에 클래스가 중첩된 클래스)는 ①과 ②를 뜻한다
2 . 자바에서의 중첩 클래스와 내부 클래스
1) 자바에서의 중첩클래스(static x)
package house;
public class JavaHouse {
private String address;
private LivingRoom livingRoom;
public JavaHouse(String address) {
this.address = address;
this.livingRoom = new LivingRoom(10);
}
public LivingRoom getLivingRoom() {
return livingRoom;
}
public class LivingRoom {
private int area;
public LivingRoom(int area) {
this.area = area;
}
public String getAddress() {
return JavaHouse.this.address; // 바깥 클래스와 연결되어 있다.
}
}
}
1-1) 호출
- 바깥 클래스 호출 하는 함수를 사용할 수 있음.
new JavaHouse("제주도").getLivingRoom().getAddress();
2) 자바에서의 중첩클래스(static o)
- 중첩 클래스에 static을 붙이면 바깥 클래스를 바로 불러올 수 없다.
(static 인스턴스와 아닌 것의 인스턴스 메모리 적재 위치를 생각하면 이해하기 쉽다)

▶ 내부 클래스가 외부 클래스를 참조하며 생기는 몇가지 문제점이 있다.
1. 내부 클래스는 숨겨진 외부 클래스 정보를 가지고 있어, 참조를 해지하지 못하는 경우 메모리 누수가 생길 수 있고, 이를 디버깅 하기 어렵다.
2. 내부 클래스의 직렬화 형태가 명확하게 정의되지 않아 직렬화에 있어 제한적이다.
★ 그러므로 기본적으로 바깥 클래스를 참조하지 않는 것이 권장된다.
- 코틀린에서는 이러한 Guide를 따르고 있다, 기본적으로 바깥 클래스를 참조하지 않으며, 바깥 클래스를 참조하고 싶다면 inner 키워드를 추가해야한다.
3 . 코틀린의 중첩 클래스와 내부 클래스
□ 코틀린에서 권장되는 클래스 안의 클래스를 만드는 방법
class House (
private val address: String,
private val livingRooms: LivingRoom
){
class LivingRoom(
private val area: Double
)
}
→ 기본적으로 코틀린에서는 바깥 클래스에 대한 연결이 없는 중첩 클래스가 만들어진다.
□ 코틀린에서 권장되지 않는 클래스 안의 클래스를 만드는 방법(내부 클래스가 바깥 클래스 참조)
class House (
private val address: String,
private val livingRooms: LivingRoom
){
inner class LivingRoom( // inner 키워드 사용
private val area: Double
) {
val address: String
get() = this@House.address // 자바에서는 House.this.address 부분.
}
}
- 내부 클래스에 inner 키워드 사용
- 바깥 클래스를 참조할 때는 『this@바깥클래스명』을 사용
| 설명 | 자바 | 코틀린 |
| (권장) 바깥 클래스 참조 없음 |
클래스 안의 static 클래스 | 클래스 안의 클래스 (기본) |
| 바깥 클래스 참조함 |
클래스 안의 클래스 | 클래스 안의 inner 클래스 |
※ (intellij) 코틀린 코드 자바로 변환
tool > Kotlin > Show Kotlin Bytecode
자바 개발자를 위한 코틀린 입문(Java to Kotlin Starter Guide)| 최태현 - 인프런 강의
현재 평점 5.0점 수강생 3,550명인 강의를 만나보세요. 이 강의를 통해 Kotlin 언어의 특성과 배경, 문법과 동작 원리, 사용 용례, Java와 Kotlin을 함께 사용할 때에 주의할 점 등을 배울 수 있습니다. Ko
www.inflearn.com
'Kotlin > Java to Kotlin Guide' 카테고리의 다른 글
| FP - 배열과 컬렉션 (0) | 2025.10.08 |
|---|---|
| 코틀린에서의 OOP - 6. 다양한 클래스를 다루는 방법 (0) | 2025.10.07 |
| 코틀린에서의 OOP - 4. object (0) | 2025.10.07 |
| 코틀린에서의 OOP - 3. 접근 제어 (0) | 2025.10.07 |
| 코틀린에서의 OOP - 2. 상속 (0) | 2025.10.06 |