Language/Kotlin
[keyword] Companion Object
개랭갱깽스타
2022. 2. 17. 11:22
코틀린의 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)
.참고
반응형