티스토리 뷰

중첩 클래스

  • 클래스 안에 또 다른 클래스를 중첩해서 사용할 수 있다.
  • 중첩된 클래스는 외부 클래스의 멤버를 접근할 수 없다.
  • 자바의 정적 중첩 클래스와 느낌이 비슷하다...?
class Outer {
    private val outerMember = 10
    fun outerFunc() = println("outer function call!!")
    class Nested {
        // 외부 클래스 접근 불가
        // pinrtln(outerMember)
        // outerFunc()
        fun nestedFunc() = print("nested function call!!")
    }
}

fun main() {
    // 자바의 중첩 스태틱 클래스와 같다
    Outer.Nested().nestedFunc() // nested function call!!
}

내부 클래스

  • inner키워드를 붙이면 내부 클래스로 외부 클래스의 멤버를 접근 할 수있다.
  • 중복된 멤버가 있다면 this한정자로 접근한다.
  • 자바의 내부 클래스와 비슷한 느낌....?
class Outer {
    val outerMember = 10
    fun outerFunc() = println("outer function call!!")
    val overlapMember = "outer member"

    inner class Inner {
        val overlapMember = "inner member"
        fun getOuterMember() = println(outerMember)
        fun callOuterfunc() = outerFunc()
        fun callOverlapMember() {
            println("outer overlap member :: ${this@Outer.overlapMember}")
            println("inner overlap member :: ${this@Inner.overlapMember}")
            println("inner overlap member :: ${this.overlapMember}")
        }
    }
}

fun main() {
    // 외부 클래스부터 인스턴스화 해야한다.
    val innerClass = Outer().Inner()
    innerClass.getOuterMember() // 10
    innerClass.callOuterfunc() // outer function call!!

    // outer overlap member :: outer member
    // inner overlap member :: inner member
    // inner overlap member :: inner member
    innerClass.callOverlapMember()
}

출처

https://javacan.tistory.com/entry/kotlin-11-12-ko-reference

 

코틀린 1.1 / 1.2 한글 레퍼런스 PDF 문서

코틀린 1.2 한글 레퍼런스 문서. 일부 내용(자바스크립트 관련 등)을 생략했고, 내용에 오류가 존재할 수 있음. 코틀린 1.1 한글 레퍼런스 문서. 일부 내용(자바스크립트 관련 등)을 생략했고, 내용에 오류가 존..

javacan.tistory.com

 

댓글