개발(Android)/kotlin syntax

[Kotlin syntax] Nested Class, Inner Class

shinyelee 2022. 4. 8. 19:17

[코틀린 문법] 중첩 클래스와 내부 클래스

Nested Class(중첩 클래스)

fun main() {

    val test4 = Test4.Test4NestedClass()
    test4.testFun4()
//    TestFun4

}

// Nested Class(중첩 클래스) //
// 객체지향 / 캡슐화
// 외부 클래스의 내용을 공유할 수 없는 별개의 클래스
class Test4 {
    val tempText1 = "tempText1"
    class Test4NestedClass {
        fun testFun4() {
            println("TestFun4")
            // println(tempText1)
            // Kotlin: Unresolved reference: tempText1
        }
    }
}

Inner Class(내부 클래스)

fun main() {

    val test5 = Test5().Test5InnerClass()
    test5.testFun5()
//    TestFun5
//    tempText2

}

// Inner Class(내부 클래스) //
// RecyclerView
// 혼자서 객체를 만들 수 없음(외부 클래스의 객체가 있어야만 생성 및 사용 가능)
class Test5 {
    val tempText2 = "tempText2"
    inner class Test5InnerClass {
        fun testFun5() {
            println("TestFun5")
            println(tempText2)
        }
    }
}
fun main() {

    Out.Nest().introduce()

    val outer = Out()
    val inner = outer.In()

    inner.introduceIn()
//    Nested Class
//    Inner Class

    inner.introduceOut()
//    Outer Class

    outer.text = "Changed Outer Class"
    inner.introduceOut()
//    Changed Outer Class

}

// 실습
class Out {

    var text = "Outer Class"

    class Nest {

        fun introduce() {
            println("Nested Class")
        }

    }

    inner class In {

        var text = "Inner Class"

        fun introduceIn() {
            println(text)
        }

        fun introduceOut() {
            println(this@Out.text)
        }

    }

}

참고

 

[입문편] 안드로이드를 위한 코틀린(Kotlin) 문법 - 인프런 | 강의

코틀린 문법 기초 강의입니다. 안드로이드 앱을 코틀린 언어로 개발하고 싶으신 분들을 위한 강의이고, 기초부터 튼튼하게 코틀린 문법을 재미있게 공부할 수 있습니다., - 강의 소개 | 인프런...

www.inflearn.com

반응형