자바 개발자를 위한 코틀린 입문 - 12. 코틀린에서 object를 다루는 방법


자바 개발자를 위한 코틀린 입문 에 강의 내용을 정리한 내용이다.
코틀린에서 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에 인터페이스 구현
Log
1
2
3
4
5
6
interface Log {

fun log()

}
`
Person
1
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: 타입이름을 이용하여 익명 클래스 선언

Movable
1
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()
}

소스코드

참조