테크과학! DiMo
개발 환경: play.kotlinlang.org
Object
단 하나의 객체만으로 공통적인 속성과 함수를 사용해야 하는 코드에는 굳이 Class를 쓸 필요 없이 Object를 사용하면 됨.
Singleton Pattern(클래스의 인스턴스를 단 하나만 만들어 사용하도록 하는 코딩 아키텍쳐 패턴)을 언어 차원에서 지원하
는 것
fun main() {
println(Counter.count)
Counter.countUp()
Counter.countUp()
println(Counter.count)
Counter.clear()
println(Counter.count)
}
object Counter {
var count = 0
fun countUp() {
count++
}
fun clear() {
count = 0
}
}
Output:
0
2
0
object로 선언된 객체는 '최초 사용시' 자동으로 생성되며 이후에는 코드 전체에서 '공용으로 사용'될 수 있으므로 프로그
램이 종료되기 전까지 공통적으로 사용할 내용들을 묶어 만드는 것이 좋다.
Companion Object
기존 클래스 안에도 object를 만들 수 있다. 클래스의 인스턴스 기능은 그대로 사용하면서 인스턴스 간에 공용으로 사용
할 속성과 함수를 별도로 만드는 기능. 기능적으로는 기존의 언어들이 가진 static 멤버와 비슷.
fun main() {
var a = FoodPoll("짜장")
var b = FoodPoll("짬뽕")
a.vote()
a.vote()
b.vote()
b.vote()
b.vote()
println("${a.name} : ${a.count}")
println("${b.name} : ${b.count}")
println("총계 : ${FoodPoll.total}")
}
class FoodPoll(val name: String) {
companion object {
var total = 0
}
var count = 0
fun vote() {
total++
count++
}
}
Output:
짜장 : 2
짬뽕 : 3
총계 : 5
'Kotlin > 기본 문법' 카테고리의 다른 글
코틀린 강좌 #17 클래스의 다형성 (0) | 2020.12.19 |
---|---|
코틀린 강좌 #16 익명객체와 옵저버 패턴 (0) | 2020.12.19 |
코틀린 강좌 #14 스코프 함수 (0) | 2020.12.19 |
코틀린 강좌 #13 고차함수와 람다함수 (0) | 2020.12.19 |
코틀린 강좌 #12 변수, 함수, 클래스의 접근범위와 접근제한자 (0) | 2020.12.19 |