1. Kotlin에서 object를 사용하는 이유
1) 싱글톤 패턴 구현 : 전체 생명주기에서 한 하나의 인스턴스만 존재해야하는 객체 구현
- object 선언은 클래스 정의와 그 인스턴스 생성을 동시에 수행함
2) 컴패니언 객체 : 클래스 안에 정적 멤버를 담는 용도. static
3) 객체 표현식 : 익명 내부 클래스 (inner) 대체제로 사용.
특정 인터페이스의 구현 또는 다른 클래스를 확장하는 단일 사용 객체를 간단히 선언
* object 선언 : 전역적으로 단일 인스턴스를 가지는 객체 정의에 사용됨 (프로그램 전반)
* object 표현식 : 주로 일시적인 익명 객체를 필요로 할 때 사용. 그 인스턴스에 다시 접근하지는 못함
2024.03.06 - [언어/Kotlin] - [Kotlin 문법 종합] - Single-expression function, 싱글턴 (@@질문하기)
2. Object와 Companion
1) object
- 싱글톤 패턴을 구현함
- object로 선언된 객체는 해당 클래스의 인스턴스를 단 한 번만 생성함
- 해당 클래스의 모든 인스턴스에서 공유됨, 어디서든 접근 가능 (static이니까)
- 객체 생성 없이 메소드 실행 가능
- 클래스의 내부나 외부에 정의될 수 있고, 독립적인 객체로 동작함
- 클래스 이름이 없는 경우 -> 익명 객체
object MySingleton {
fun doSomething() {
println("Singleton object is doing something")
}
}
fun main() {
MySingleton.doSomething() // Singleton object is doing something
}
2) companion object
- 클래스 내에 정의되어 클래스에 속한 정적 멤버를 정의
- 클래스 내에서 유일한 인스턴스를 가지지만, 싱글톤과는 관련이 없음 (= 단일 인스턴스를 보장하지 않음)
= 표현식이 사용될때마다 새로운 인스턴스가 생성됨
- 클래스 내부에 선언되어 클래스의 인스턴스와 관련된 작업을 수행함 (ex. 객체 생성 없이 메서드 오버라이딩)
class MyClass {
companion object {
fun doSomething() {
println("Companion object is doing something")
}
}
}
fun main() {
MyClass.doSomething() // Companion object is doing something
}
'언어 > Kotlin' 카테고리의 다른 글
OBJECT, MAP 접근 코드 (# 추가하기) (0) | 2024.04.04 |
---|---|
[Kotlin 문법] 문자열 다루기 (0) | 2024.03.15 |
[Kotlin 공부] 시간 출력, 비교하기 (0) | 2024.03.13 |
[Kotlin 문법 종합] 스레드 활용 실습 (@ 수정하기) (0) | 2024.03.08 |
[Kotlin 문법 종합] - 쓰레드, 코루틴 (# 추가하기) (0) | 2024.03.06 |