본문 바로가기
언어/Kotlin

코틀린 익명 중첩 클래스

by 김어찐 2022. 5. 25.
728x90
package innerclass
// inner에서는 outer 접근 자유롭다
// outer에서는 inner 접근 어려움
fun main() {
    val obj1 = Outer1()
    val obj2 = obj1.Inner()
    obj2.innerMethod2()

    val t1 = TestClass2()
    t1.testMehtod1()

    val t3 = object :TestClass1(){
        override fun testMehtod1() {
            println("익명 중첩 클래스의 testMehod1")
        }
    }
    t3.testMehtod1()

    // 인터페이스는 생성자 없음
    val t4 = object :TestInter1{
        override fun interMethod1() {
            println("익명 중첩 클래스의 interMehod1")
        }
    }
    t4.interMethod1()
}
class Outer1{
    val outerMember1 = 100
    fun outerMethod1() {
        println("Outer Method")
    }
    inner class Inner{
        var innerMember1 = 200

        fun innerMethod1() {
            println("Inner Mehtod")
        }

        fun innerMethod2() {
            println("outerMember1 = ${outerMember1}")
            outerMethod1()
        }
    }
}

abstract class TestClass1{
    abstract fun testMehtod1()
}

interface TestInter1{
    fun interMethod1()
}

class TestClass2 : TestClass1(){
    override fun testMehtod1() {
        println("TestCLass2의 testMethod1")
    }
}

class TestClass3 : TestInter1 {
    override fun interMethod1() {
        println("TestCLass3의 testMethod1")
    }
}
728x90

'언어 > Kotlin' 카테고리의 다른 글

코틀린 캐스팅  (0) 2022.05.25
코틀린 null 처리  (0) 2022.05.25
코틀린 Generic  (0) 2022.05.25
코틀린 DataClass  (0) 2022.05.25
코틀린 Companion  (0) 2022.05.24