코틀린 강좌 #15 오브젝트

Kotlin/기본 문법 · 2020. 12. 19. 14:00

테크과학! DiMo

 

테크과학! DiMo

개발자가 얘기하는 생활 속 IT기술에 대한 과학! 여러분이 몰랐던, 혹은 정확히 알지 못했던 IT 테크놀러지를 파드립니다! 좋은 영상을 위한 채널 후원, 투네이션을 통해서 해주세요! 후원링크 htt

www.youtube.com

 

 

개발 환경: 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