728x90
- Object : 클래스를 정의함과 동시에 객체를 생성
- 싱글톤을 쉽게 만들 수 있는 키워드
- 생성자 사용 불가
- 프로퍼티, 메서드, 초기화 블록은 사용 가능
- 다른 클래스나, 인터페이스를 상속받을 수 있음
- Companion Object 동반객체
- Java의 static과 동일한 역할
- 클래스 내에 하나만 생성할 수 있음
코드
package com.example.kotlin
import androidx.compose.runtime.produceState
import com.example.kotlin.Book.Companion.NICKNAME
import com.example.kotlin.Book.Novel.NICKNAME
fun main() {
println(Counter.count)
Counter.countUp()
Counter.countUp()
println(Counter.count)
Counter.hello()
Book.NAME
Book.create() //인스턴스 안 만들어도 class function처럼 쓸 수 있다.
NICKNAME //Novel 붙여서 import 달라졌다.
}
object Counter : Hello() {
init {
println("카운터 초기화")
}
var count = 0
fun countUp() {
count++
}
}
open class Hello(){
fun hello() = println("Hello")
}
class Book {
companion object Novel { //자바의 static과 같은 것
val NAME = "hello"
const val NICKNAME= "nickname"
fun create() = Book()
}
// companion object { 클래스에 하나만 선언할 수 있다.
//
// }
}728x90
'코틀린(Kotlin)' 카테고리의 다른 글
| (코틀린/Kotlin) Data, Sealed class (0) | 2024.02.08 |
|---|---|
| (코틀린/Kotlin) 초기화 지연 (0) | 2024.02.08 |
| (코틀린/Kotiln) Scope function (0) | 2024.02.08 |
| (코틀린/Kotlin) 확장함수 (0) | 2024.02.08 |
| (코틀린/Kotlin) Lambda(람다) (0) | 2024.02.08 |