Chef.Yeon
Code Cook
Chef.Yeon
전체 방문자
오늘
어제
  • 분류 전체보기 (230)
    • 게임 개발 (1)
      • Unity (1)
    • Android (27)
      • Kotlin (19)
      • 우아한테크코스 5기 (4)
    • Language (11)
      • 파이썬 (3)
      • Java (7)
    • DB (2)
      • SQL (16)
    • Spring (25)
    • 코딩테스트 (56)
    • Git (1)
    • TIL (85)
    • DevOps (6)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • MariaDB
  • til
  • Wil
  • 에라토스테네스의 체
  • 프리코스
  • 내림차순
  • Android
  • 코딩테스트
  • 코틀린 인 액션
  • 다이나믹 프로그래밍
  • spring
  • webflux
  • 레포지토리
  • elasticsearch
  • 프로그래머스
  • 파이썬
  • kibana
  • kotlin
  • SQL
  • java
  • 코틀린
  • rsocket
  • 문자열
  • 안드로이드
  • Docker
  • grafana
  • 백준
  • 우아한테크코스
  • ec2
  • enum

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
Chef.Yeon

Code Cook

Android/Kotlin

[Kotlin] object

2022. 9. 16. 18:37

object 선언

object CartItems {
    private val mutableProducts = mutableListOf<Product>()
    val products: List<Product> = mutableProducts
    
    fun addProduct(product: Product){
        mutableProducts.add(product)
    }
}

 

싱글턴 패턴

- 전체에서 단일 객체로 유지하는 기법

- 인스턴스를 하나만 만들어 사용

 

object exrpessions - 무명 객체

1. 무명 객체 생성

- 이름을 생략하고 객체의 프로퍼티와 함수를 정의

- 단일 객체로 생성되는 것과 다르게 매번 새로운 객체를 생성

val cartItems object {
    val products = mutableListOf(Product("전자기기","핸드폰"))
    
    override fun toString() = products.toString()
}
print(cartItems) // [Product(categoryLabel=전자기기,name=핸드폰)]

 2. 클래스/인터페이스 상속

interface ClickListener {
    fun onClick(view: View)
}

val clickListener = object: ClickListener{
    override fun onClick(view: View){
    	TODO("Not yet implemented")
    }
}

 

companion object

- constructor를 private로 변경해 외부에서 생성자로 인스턴스를 생성하는 것을 방지

- companion object에서 생성자를 제공하는 경우 사용

class Store private constructor(private val products: List<Product>){
    companion object{
        fun create(storeId: String): Store{
            return Stroe(fetchProducts((storeId))
        }
    }
    private fun fetchProducts(storeId: String): List<String>{
        // TODO 데이터 요청
        return listOf()
    }
    fun showProducts(){...}
}
val store = Store.create("electronics")
store.showProducts()

외부에서 Store를 생성할 때는 companion object의 create()를 호출하여 생성

 

Compile time constant

1. const modifier

- compile time에 값을 알 수 있는 read-only 프로퍼티

2. 제약조건

- top-level 프로퍼티

- object 프로퍼티

- companion object 프로퍼티

+ custom getter 없음

const val KEY_PRODUCT_ID = "product_id"
const val KEY_PRODUCT_ID: String
    get()="product_id" // Error - getter 생성 불가능
728x90

'Android > Kotlin' 카테고리의 다른 글

[Kotlin] 고차 함수, 람다, Scope functions  (0) 2022.09.18
[Kotiln] Nested & inner class, Extension함수, Generics  (0) 2022.09.16
[Kotlin] List, Set, Map, Collection Operations  (0) 2022.09.16
[Kotlin] Package, 가시성 변경자(public,private,internal,protected)  (0) 2022.09.11
[Kotlin] 클래스 toString/equals/hashCode, data class  (0) 2022.09.10
    'Android/Kotlin' 카테고리의 다른 글
    • [Kotlin] 고차 함수, 람다, Scope functions
    • [Kotiln] Nested & inner class, Extension함수, Generics
    • [Kotlin] List, Set, Map, Collection Operations
    • [Kotlin] Package, 가시성 변경자(public,private,internal,protected)
    Chef.Yeon
    Chef.Yeon
    보기 좋고 깔끔한 코드를 요리하기 위해 노력하고 있습니다.

    티스토리툴바