Per ardua ad astra !
I'm On My Way
Per ardua ad astra !
전체 방문자
오늘
어제
  • 분류 전체보기 (126)
    • Algorithm (50)
      • 백준 (30)
      • SWEA (3)
      • JUNGOL (3)
      • Programmers (5)
      • LeetCode (2)
    • 안드로이드 개발 (6)
      • Java로 개발 (0)
      • Kotlin으로 개발 (3)
    • Spring (41)
      • Spring기본 (17)
      • JPA기본 (15)
      • JPA활용 SpringBoot 기본 (9)
      • API 개발 기본 (0)
    • 네트워크 (3)
    • 운영체제 (0)
    • Life (3)
      • 책 (0)
      • 자기계발 (1)
      • 일상 (2)
    • 노마드코더 (3)
      • python으로 웹 스크래퍼 만들기 (3)
    • 프로그래밍 언어 (17)
      • Java 기본 (2)
      • 코틀린 기본 (15)

블로그 메뉴

  • 홈
  • 방명록

인기 글

hELLO · Designed By 정상우.
Per ardua ad astra !

I'm On My Way

프로그래밍 언어/코틀린 기본

[코틀린 기초] 생성자 없이 객체를 직접 만드는 Object

2021. 2. 27. 01:27
lesson 16 생성자 없이 객체를 직접 만드는 Object

 

여러개의 인스턴스 객체가 필요 없다면 ? 
굳이 class를 쓸 필요 없이 Object를 사용하자 !

Singleton Pattern: 클래스의 인스턴스를 '단 하나'만 만들어 사용하도록 하는 코딩 아키택쳐 패턴

Object는 인스턴스를 생성하지 않고 그 자체로 객체이기 때문에 생성자를 따로 만들지 않는다. 

 

 

코드 예제

fun main(){
  
  println(Counter.count)

  Counter.countUp()
  Counter.countUp()
  println(Counter.count)

  Counter.clear()
  println(Counter.count)

}

object Counter{
  var count = 0
  fun countUp(){
    count++
  }
  fun clear(){
    count = 0
  }
}

object 키워드로 선언. { } 중괄호를 통해서 속성과 함수 만들 수 있다.

Object로 선언된 객체는 '최초 사용시' 자동으로 생성되며 이후에는 코드 전체에서 공용으로 사용된다.

 

실행 결과

 


companion object


그런데 class 안에도 Object를 만들수 있다 => companion object

class가 instance 여러개를 만들 수 있는데, 이 여러 인스턴스가 공유할 공용 속성 및 함수를 compnion object를 이용해서 만들 수 있는 것이다. java의 static 키워드와 비슷하다.

 

static: 클래스 냄부에서 별도의 영역에 고정적으로 존재하여 인스턴스를 생성하지 않아도 공용으로 사용가능한 속성이나 함수. 의 개념과 비슷하다. 

 

코드예제

fun main(){

  var a = FoodPoll("짜장")
  var b = FoodPoll("짬뽕")

  a.vote()
  a.vote()
  a.vote()
  
  b.vote()
  b.vote()

  println("${a.name} : ${a.count}")
  println("${b.name} : ${b.count}")
  println("총계 : ${FoodPoll.total}")
  
}

class FoodPoll(val name: String){
  companion object{
    var total = 0
  }
  var count = 0

  fun vote(){
    total++
    count++
  }
}

 

출력결과


짜장 : 3
짬뽕 : 2
총계 : 5

 

companion object로 만들어진 속성 total은 5가 나온 모습

 

 

학습 출처

테크과학! DiMo-디모의 Kotlin 강좌 (lesson 16)

(www.youtube.com/playlist?list=PLQdnHjXZyYadiw5aV3p6DwUdXV2bZuhlN)

구독과 좋아요 !

 

+추가 공부

 

object 표현식 

위에서 배운 object 선언과 달리 object 표현식도 있다. object 표현식은 이름이 없고, 싱글톤도 아니다. obejct표현식이 사용될 때마다 새로운 인스턴스가 생성된다. 즉 우리가 배운 java의 익명 내부 클래스와 비슷한 형태로 사용할 수 있는 것이다.  

 

object

    '프로그래밍 언어/코틀린 기본' 카테고리의 다른 글
    • [코틀린 기초] 클래스의 다형성(업캐스팅, 다운캐스팅), 제너릭
    • [코틀린 기초] 이벤트를 전달하는 observer 패턴
    • [코틀린 기초] 스코프 함수
    • [코틀린 기본] 고차함수와 람다함수
    Per ardua ad astra !
    Per ardua ad astra !
    개발자 지망생이며 열심히 공부하고 기억하기 위한 블로그입니다.

    티스토리툴바