Lined Notebook

[자바 개발자를 위한 코틀린 입문] 중첩 클래스 다루기

by dev.hardy

코틀린에서 중첩 클래스를 다루는 방법

인프런에서 최태현 지식 공유자님의
자바 개발자를 위한 코틀린 입문을 수강하며 정리한 내용 입니다.
하단에 강의 링크 있습니다.

중첩 클래스의 종류

  1. static을 사용하는 중첩 클래스 : 바깥 클래스에 접근할 수 없다. (직접적인 참조가 없다.)
  2. static을 사용하지 않는 중첩 클래스
    1. 내부 클래스
    2. 지역 클래스
    3. 익명 클래스
  1. 내부 클래스는 숨겨진 외부 클래스 정보를 가지고 있어, 참조를 해지하지 못하는 경우 메모리 누수가 생길 수 있고, 이를 디버깅 하기 어려움
  2. 내부 클래스의 직렬화 형태가 명확하게 정의되지 않아 직렬화에 있어 제한이 있다.
이펙티브 자바
- 클래스 안에 클래스를 만들 때는 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

활동하기