한 걸음 두 걸음
Kotlin 코틀린 ] Object Express and Declarations 본문
반응형
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 제약사항
-
익명객체가 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 |