한 걸음 두 걸음

Kotlin 코틀린 ] Object Express and Declarations 본문

Language/Kotlin

Kotlin 코틀린 ] Object Express and Declarations

언제나 변함없이 2019. 5. 27. 11:02
반응형

Object

어떤 클래스에서 조금 변경된 객체를 생성하지만, 상위 클래스의 상속을 명시하지 않고 객체를 생성할 때 사용합니다.
Object의 표현은 Java의 익명객체와 같고,
객체의 선언은 자바의 싱글턴과 비슷합니다.
Companion Object는 어떤 클래스와 관계된 싱글턴이 필요할 때 사용합니다. 싱글턴 + 클래스메소드(static)
(JAVA에는 Static함수가 없습니다.)

사용방법 아래처럼 Runnable을 상속받은 클래스를 따로 만들어주지않고 바로 object로 처리할 수 있엇음~

fun main(args : Array<String>){
    val t = Thread(object : Runnable); {
        override fun run(){
            println("hello world")
        }
    }
    t. run()
}

하지만 여기서 Runnable 처럼 슈퍼타입이 없어도 간단하게 object를 만들 수도 있습니다.

fun main(args : Array<String>){
    val data = object {
        var x = 111
        var y = 222
    }
    println("${data.x} , ${data.y}")
}

이런식으로 할 수도 있습니다. // 111,222 출력

Object 제약사항

  1. 익명객체가 local이나 private로 선언될 때만 type로 사용할 수 있습니다.

    class C {
    private fun foo() = object {val x: String = "x"}
    fun publicFoo() = object {val x: Strng= "x"}  //일 때,
    
    fun bar(){
        val x1 = foo.x() //는 되지만,
        val x2 = publicFoo().x //는 안됩니다. publicFoo는 public이기때문
    }
    }
    }

    그리고 내부 함수에서도 외부 클래스의 변수에 접근할 수 있습니다. (java에서는 final로 바꿔서 사용하는 등 안돼죠 ㅠ)

2, Object delaration
객체 선언할 때는 싱글톤 패턴을 사용할 수 있습니다. 코틀린에서는 object declarations를 이용하여 싱글톤을 만드는 것이 가능합니다. 그리고 상속이 가능합니다.

11강 24분부터 다시 드러 ㅎㅎ 

반응형

'Language > Kotlin' 카테고리의 다른 글

Kotlin 10 ] Data Class and 중첩클래스(Nested classes)  (0) 2019.05.20
Kotlin 09 ] Properties and Fields  (0) 2019.05.20
Kotiln 08 ] 상속  (0) 2019.05.20
Kotlin 07 ] 클래스와 상속  (0) 2019.05.20
Kotlin ] 06 Package, Return and Jumps  (0) 2019.05.20