-
[Kotlin] ObjectKotlin 2024. 3. 12. 23:06
Object
object는 인스턴스를 생성하지 않고 그 자체로 객체이기 떄문에 생성자는 사용하지 않는다
object로 생성된 객체는 최초 사용 시 자동으로 생성되며 이후에는 코드 전체에서 공용으로 사용될 수 있으며
프로그램이 종료되기 전까지 공통적으로 사용할 내용들을 묶어 만드는 것이 좋다.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 } }
Compaion 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++ } }
총계가 5 가 나온 이유는 서로 다른 인스턴스 임에도companion object 내에 있는 total 을 공유하고 있기 때문에 모든 인스턴스에서 투표 수를 누적할 수 있기 때문이다
'Kotlin' 카테고리의 다른 글
[Kotlin] 다형성 as is (0) 2024.03.15 [Kotlin] 익명객체와 옵저버 패턴 (0) 2024.03.12 [Kotlin] 스코프 함수 (1) 2024.03.12 [Kotlin] 고차함수와 람다함수 (0) 2024.03.12 [Kotlin] 변수, 함수, 클래스의 접근범위와 접근제한자 (0) 2024.03.12