Notice
Recent Posts
Recent Comments
NeuroWhAI의 잡블로그
[Kotlin] object 본문
package com.neurowhai
class Foo {
private fun privateObj() = object { val x = 42 }
fun publicObj() = object { val x = 42 }
fun test() {
println(privateObj().x)
//println(publicObj().x) // ERROR!
}
}
// 객체 선언 (싱글톤)
object Neurowhai {
fun sayHi() = println("Hi")
val name = "NeuroWhAI"
}
interface Factory<T> {
fun create(): T
}
// 동반자(?) 객체
class MyClass {
var a = 0
companion object Abc/*이름 생략 가능*/ : Factory<MyClass> {
override fun create() = MyClass()
}
object Data {
fun sayHi() = println("Hi")
}
}
fun main(args: Array<String>) {
MyClass.Data.sayHi()
//MyClass.sayHi() // 이름 생략 불가능
//val c = MyClass.Abc.create() // 이렇게 해도 문제는 없음
val c = MyClass.create() // 이름 생략 가능 (마치 static 함수 같은 느낌)
print("${Neurowhai.name} : ")
Neurowhai.sayHi()
// 객체 표현식
val t = Thread(object : Runnable {
override fun run() {
c.a = 42
println("Hello")
}
})
t.run()
t.join()
// 람다
val t2 = Thread {
println(c.a)
}
t2.run()
t2.join()
}
문법 강좌는 여기서 끝이네요.
얼마 안배운 것 같지만 뭐 맛보기로 한거니 충분한 것 같습니다.
'개발 및 공부 > 언어' 카테고리의 다른 글
[C++] shared_mutex, shared_lock 사용 예시 (0) | 2018.10.19 |
---|---|
[C++] Memory order (0) | 2018.10.16 |
[C++] 다중 상속시 인스턴스 주소를 얻을 때 주의할 점 (0) | 2018.09.30 |
[Kotlin] Data class, Inner class (0) | 2018.09.29 |
[Kotlin] 프로퍼티 (0) | 2018.09.22 |
Comments