코틀린에서는 명시적인 static 키워드가 없습니다. 대신, 정적 멤버를 정의하기 위해서는 객체 선언(object declaration)이나 컴패니언 객체(companion object)를 사용합니다. 여기에서는 각각의 방법에 대해 알아보겠습니다.
1. 객체 선언 (Object Declaration)
object 키워드를 사용하여 객체 선언을 하면 해당 객체는 싱글톤 패턴으로 동작하며, 그 안에 정의된 멤버들은 정적(static)으로 취급됩니다.
object MyObject {
var staticVariable: Int = 0
fun staticFunction() {
println("Static Function")
}
}
fun main() {
MyObject.staticVariable = 42
println(MyObject.staticVariable) // 출력: 42
MyObject.staticFunction() // 출력: Static Function
}
MyObject는 싱글톤으로 생성되어 프로그램 전체에서 하나의 인스턴스만 존재하며, 그 안에 있는 변수와 함수는 정적으로 사용할 수 있습니다.
2. 컴패니언 객체 (Companion Object)
클래스 내부에 companion object를 정의하면 그 안의 멤버들은 해당 클래스의 인스턴스가 아닌 클래스 자체에 속한 것으로 취급됩니다. 이는 자바의 정적 메서드와 유사한 동작을 합니다.
class MyClass {
companion object {
var staticVariable: Int = 0
fun staticFunction() {
println("Static Function")
}
}
}
fun main() {
MyClass.staticVariable = 42
println(MyClass.staticVariable) // 출력: 42
MyClass.staticFunction() // 출력: Static Function
}
companion object 내부의 멤버는 클래스 이름을 통해 직접 접근할 수 있습니다. 또한, 컴패니언 객체의 이름을 생략하고 MyClass의 멤버처럼 사용할 수 있습니다.
class MyClass {
companion object {
var staticVariable: Int = 0
fun staticFunction() {
println("Static Function")
}
}
}
fun main() {
MyClass.staticVariable = 42
println(MyClass.staticVariable) // 출력: 42
MyClass.staticFunction() // 출력: Static Function
// 컴패니언 객체의 이름 생략 가능
println(MyClass.staticVariable) // 출력: 42
MyClass.staticFunction() // 출력: Static Function
}
따라서 코틀린에서는 명시적인 static 키워드 없이도 객체 선언과 컴패니언 객체를 활용하여 정적(static) 멤버를 구현할 수 있습니다.
With ChatGPT
'Kotlin > 포스팅' 카테고리의 다른 글
코틀린 오버로딩한 메서드 생성 (0) | 2024.01.07 |
---|---|
코틀린 노출된 선언 이름 변경 (0) | 2024.01.07 |
코틀린 객체 (0) | 2024.01.07 |
코틀린 최상위 선언 (0) | 2024.01.07 |
코틀린 프로퍼티 접근 (0) | 2024.01.07 |