반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 비동기 처리
- Kotlin
- 알고리즘
- 플러터 동작
- 플러터
- 프리즈드
- 거리알고리즘
- 싱글톤
- Android
- linebreak
- Widget Tree
- Lazy
- Java
- Singleton
- 자바
- 자료구조
- IOS
- 완전탐색
- 에러
- element tree
- 재귀
- dfs
- 코틀린
- 프로그래머스
- zwj
- flutter
- 초기화
- Render object tree
- dart
- 앱아이콘 변경
Archives
- Today
- Total
모바일 개발하는 자바리안의 메모장
Kotlin - object & companion object 본문
반응형
object 와 companion object 의 차이점을 알아봤다.
Kotlin 에서는 싱글톤 클레스를 정의할 때 ojbect 키워드를 사용된다. class가 아닌 object로 선언해줌으로서 완전 static 클레스가 된다. (자바에서 싱글톤 만들던거랑 비교해보면 엄청 편함...)
아래 예제와 같이 별도의 별도의 객체생성 없이 클래스를 통해 바로 인스턴스 함수, 변수에 접근할 수 있다.
object MyObject {
fun myFunction() {
println("myFunction inside MyObject")
}
}
fun main() {
MyObject.myFunction()
}
companion object 또한 싱글톤과 관련된 문법이며, 클래스에 연결된 특수한 종류의 객체이다. Companion object는 일반 클래스 안에 정의하며 object 와 같이 전체가 아닌 companion object 내에 정의된 함수, 변수만 싱글톤으로 생성된다. 쉽게 생각하면 companion object를 갖고 있는 class는 그냥 일반 class인 동시에 static 인스턴스들을 포함하고 있다고 생각하면 될 것 같다.
Static 인스턴스 접근 방법은 object와 동일하다.
class MyClass {
companion object {
const val INT_A = 10
fun myFunction() {
println("myFunction inside MyClass")
}
}
}
fun main() {
val classA = MyClass()
val classB = MyClass()
println(classA) //
println(classB) // 일반 class라서 당연히 주소값 다름
MyClass.myFunction()
println(MyClass.INT_A)
}
반응형
'Android > Android.Kotlin' 카테고리의 다른 글
Kotlin - lazy (0) | 2021.12.22 |
---|---|
Kotlin - Null Safety (?, !!) (0) | 2021.12.14 |
Kotlin - 변수 초기화(Initialization) (0) | 2021.12.14 |
Comments