자바 개발자를 위한 코틀린 입문 에 강의 내용을 정리한 내용이다.
코틀린에서 object를 다루는 방법에 대해서 설명한다.
static 함수와 변수
companion object(동행 객체)는 클래스와 동일하는 유일한 오브젝트 이다.
const를 붙이는 이유는 컴파일시 값을 할당한다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| class Person( val name: String = "재현", var age: Int = 1, ) {
companion object { private const val MIN_AGE = 1
fun newBaby(name: String): Person { return Person(name, MIN_AGE) } }
}
|
- companion object에 인터페이스 구현
Log1 2 3 4 5 6
| interface Log {
fun log()
} `
|
Person1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| package basic
class Person( val name: String = "재현", var age: Int = 1, ) {
companion object Factory : Log { private const val MIN_AGE = 1
fun newBaby(name: String): Person { return Person(name, MIN_AGE) }
override fun log() { println("나는 Person 클래스의 동행객체 Factory 입니다.") } }
}
|
싱글톤
obejct 를 사용하면 싱글톤 객체 생성
1 2 3 4 5 6 7 8 9 10 11
| fun main() {
println(Singleton.a) Singleton.a += 10 println(Singleton.a)
}
object Singleton { var a: Int = 0 }
|
익명 클래스
obejct: 타입이름
을 이용하여 익명 클래스 선언
Movable1 2 3 4 5 6
| interface Movable {
fun move() fun fly()
}
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| fun main() {
moveSomething(object : Movable { override fun move() { println("move") }
override fun fly() { println("fly") } })
}
private fun moveSomething(movable: Movable) { movable.move() movable.fly() }
|
소스코드
참조