728x90
반응형
개요
Java에서는 static 키워드를 사용하여 클래스 수준에서 접근 가능한 필드와 메서드를 정의합니다. 코틀린에서는 static 키워드가 없지만, 비슷한 기능을 제공하는 object, Companion Object, 최상위 함수와 변수를 사용하는 방법이 있습니다.
공통점
- 정적 접근 가능: 모두 인스턴스를 생성하지 않고도 접근할 수 있습니다.
- 유틸리티 함수와 상수 관리: 주로 유틸리티 함수와 상수를 관리하는 데 사용됩니다.
- 재사용성: 코드의 재사용성을 높이고 모듈화하는 데 도움이 됩니다.
차이점
Object 키워드
- 정의: object 키워드를 사용하여 싱글톤 객체를 정의합니다. 프로그램 전역에서 하나의 인스턴스만 존재합니다.
- 용도: 주로 전역적으로 하나만 존재해야 하는 객체를 정의할 때 사용합니다.
- 초기화: 프로그램 시작 시점에 한 번만 초기화되고 이후로는 같은 인스턴스를 사용합니다.
object MySingleton {
val name = "Singleton"
fun printName() {
println(name)
}
}
fun main() {
MySingleton.printName() // Singleton
}
Companion Object (동반 객체)
- 정의: 클래스 내부에 정의된 object로, 클래스 내부에서 정의된 싱글톤 객체입니다. 해당 클래스와 동반되어 하나의 인스턴스만 존재합니다.
- 용도: 클래스의 정적 멤버를 정의할 때 사용합니다.
- 초기화: 해당 클래스가 처음 사용될 때 초기화되고 이후로는 동일한 인스턴스를 사용합니다.
class MyClass {
companion object {
const val CONSTANT = "CONSTANT_VALUE"
fun utilityFunction() {
println("Utility function")
}
}
}
fun main() {
println(MyClass.CONSTANT) // CONSTANT_VALUE
MyClass.utilityFunction() // Utility function
}
최상위 함수 및 변수
- 정의: 클래스 외부, 파일의 최상위 수준에서 정의된 함수나 변수입니다.
- 용도: 클래스에 종속되지 않은 전역 함수나 변수를 정의할 때 사용합니다.
- 초기화: 프로그램 시작 시점에 초기화되고 이후로는 동일한 인스턴스가 사용됩니다. 함수는 호출될 때마다 실행되지만, 변수는 하나의 인스턴스로 존재합니다.
const val CONSTANT = "CONSTANT_VALUE"
fun utilityFunction() {
println("Utility function")
}
fun main() {
println(CONSTANT) // CONSTANT_VALUE
utilityFunction() // Utility function
}
정리
- object 키워드:
- 싱글톤 객체.
- 프로그램 시작 시 한 번 초기화
- 변수와 함수는 동일 인스턴스를 통해 공유.
- companion object:
- 클래스 내부 싱글톤 객체.
- 해당 클래스가 처음 사용될 때 한 번 초기화.
- 변수와 함수는 동일 인스턴스를 통해 공유.
- 최상위 함수 및 변수:
- 특정 객체나 클래스와 무관.
- 프로그램 시작 시 한 번 초기화.
- 변수는 파일 전체에서 공유.
728x90
반응형
'개발 > kotlin' 카테고리의 다른 글
Spring Boot JPA와 Kotlin Reflect 오류 해결 방법 (0) | 2024.08.08 |
---|---|
JSON을 Kotlin DTO로 변환하는 방법 - Kotlinx.Serialization 활용 가이드 (0) | 2024.08.02 |
[라이브러리] [Proj4J] 좌표계 변환 방법 (0) | 2024.07.04 |
[kotlin] ByteArray를 Int, Int를 ByteArray로 변경하는 방법 (0) | 2024.05.29 |