[자바 개발자를 위한 코틀린 입문] 중첩 클래스 다루기
by dev.hardy코틀린에서 중첩 클래스를 다루는 방법
인프런에서 최태현 지식 공유자
님의자바 개발자를 위한 코틀린 입문
을 수강하며 정리한 내용 입니다.
하단에 강의 링크 있습니다.
중첩 클래스의 종류
- static을 사용하는 중첩 클래스 : 바깥 클래스에 접근할 수 없다. (직접적인 참조가 없다.)
- static을 사용하지 않는 중첩 클래스
- 내부 클래스
- 지역 클래스
- 익명 클래스
- 내부 클래스는 숨겨진 외부 클래스 정보를 가지고 있어, 참조를 해지하지 못하는 경우 메모리 누수가 생길 수 있고, 이를 디버깅 하기 어려움
- 내부 클래스의 직렬화 형태가 명확하게 정의되지 않아 직렬화에 있어 제한이 있다.
이펙티브 자바
- 클래스 안에 클래스를 만들 때는 static 클래스를 사용하라
→ 코틀린은 이러한 가이드를 충실히 따름
코틀린의 중첩 클래스와 내부 클래스
🤩 코틀린에서는 static이 없기 때문에 권장되는 중첩 클래스
를 코틀린에서 만들때는
그냥 클래스를 사용하면 된다
class House(
private val address: String,
private val livingRoom: LivingRoom
) {
class LivingRoom(
private val area: Double
)
}
→ 기본적으로 코틀린은 바깥 클래스에 대한 연결이 없는 중첩 클래스가 만들어진다.
예) 권장되지 않는 클래스 안의 클래스: inner를 붙인다.
→ 바깥 클래스에 대한 참조를 가지고 있는 경우 (권장 X)
class House(
private val address: String,
private val livingRoom: LivingRoom
) {
inner class LivingRoom(
private val area: Double
) {
val address: String
get() = this@House.address // 상위클래스@타입. 으로 접근
}
}
→ 바깥클래스 참조를 위할려면 this@바깥클래스
를 사용한다.
Reference:
자바 개발자를 위한 코틀린 입문
블로그의 정보
개발자 하디 : 기록저장소
dev.hardy