코틀린의 Class 와 Object
Class
생성자는 [keyword] constructor 를 써서 정의한다.
객체 생성: 클래스명()
Object
싱글턴(singletone, 인스턴스가 하나만 있는 클래스) 선언 방법
객체 생성: 클래스,인터페이스 확장
var obj = object:MyClass(){}, var obj = object:MyInterface{}
⭕ 시스템 전체에서 쓸 기능
❌ 전역 상태 유지
Companion object
static 이 아니다. 객체다.
클래스가 메모리에 적재되면서 함께 생성되는 동반(Companion) 객체
객체 생성: 클래스명.Companion.멤버 → 클래스명.멤버
class MyClass2{
companion object{
val prop = "나는 Companion object의 속성이다."
fun method() = "나는 Companion object의 메소드다."
}
}
fun main(args: Array<String>) {
println(MyClass2.Companion.prop)
println(MyClass2.Companion.method())
val comp1 = MyClass2.Companion //--(1) 객체로
// 사용
println(comp1.prop)
println(comp1.method())
val comp2 = MyClass2 //--(2) 객체 생성 후
// 사용
println(comp2.prop)
println(comp2.method())
}
- 클래스 내 Companion object 는 딱 하나만 쓸 수 있다.
- 인터페이스 내에도 Companion object 를 정의할 수 있다.
- 상속 관계에서 Companion object 멤버는 같은 이름일 경우, 가려진다.(Shadowing)
.참고
반응형
'Language > Kotlin' 카테고리의 다른 글
[Coroutine] suspending method: 코루틴 일시 중단 (0) | 2022.02.09 |
---|---|
[Coroutine] Coroutine builder: 코루틴 시작 (0) | 2022.02.07 |
[Coroutine] Coroutine Context: 코루틴이 실행되는 곳 (0) | 2022.02.06 |
[Coroutine] Coroutine Scope: 코루틴이 실행되는 범위 (0) | 2022.02.05 |
[Coroutine] 코루틴 사용하기 (0) | 2022.02.05 |