쏭식
Ssongcode;
쏭식
전체 방문자
오늘
어제
  • 분류 전체보기 (106)
    • JAVA (21)
      • Basic (21)
    • Kotlin (14)
      • Basic (14)
    • Android (64)
      • Basic (24)
      • JETPACK (30)
      • Compose (8)
      • 파고들기 (2)
    • Project (4)
    • etc (3)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • Android
  • 컴포즈
  • ViewModel
  • 코드업100제
  • 리사이클러뷰
  • 객체지향
  • compose
  • mvvm
  • 알고리즘
  • 코틀린코테
  • 배열
  • Adapter
  • livedata
  • 상속
  • Room
  • 메소드
  • workmanager
  • AAC
  • 코테
  • 자바
  • 변수
  • 백준
  • DataBinding
  • 기초100제
  • Kotlin
  • Jetpack
  • 자료구조
  • 코틀린
  • 코딩테스트
  • 프로젝트회고

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
쏭식

Ssongcode;

[Kotlin/Basic] 코틀린에서의 object 키워드
Kotlin/Basic

[Kotlin/Basic] 코틀린에서의 object 키워드

2022. 8. 31. 23:59

1. static 함수와 변수

class Person private constructor(
    var name : String,
    var age : Int,
){
    //static이 존재하지 않는다.
    //이는 Factory처럼 이름을 지어줄 수도 있고, 인터페이스를 구현해 줄 수도 있음
    companion object Factory { //클래스와 동행하는 유일한 오브젝트라는 의미
        //자바에서와의 static 변수와 함수처럼 활용된다.
        /*
        정적으로 인스턴스끼리의 값을 공유
        클래스가 인스턴스화 될 때 새로운 값이 복제되는 것이 아니라,
         */
        private const val MIN_AGE = 1
        //const 를 붙이면 컴파일 시에 변수가 할당된다.
        //런타임때 할당되는 것이 아니라,
        //진짜 상수에 붙이기 위한 용도.
        //기본 타입과 String에만 붙일 수 있음
        fun newBaby(name : String) : Person{
            return Person(name, MIN_AGE)
        }
    }
}

먼저, 자바에서는 static으로 선언하여 클래스, 정적으로 인스턴스끼리의 값을 공유했다.

하지만 코틀린에서는 static이라는 키워드가 존재하지 않는다.

위의 코드처럼 companion object라는 키워드가 존재한다.

 

이는 static변수와 함수처럼 활용되며, 클래스가 인스턴스화 될 때 새로운 값이 복제되는 것이 아니라,

정적으로 인스턴스의 값을 공유한다!!

 

또한, const를 붙이면 컴파일 시에 변수가 할당된다.

진짜 상수에 붙이기 위한 용도이며, 기본타입과 String에만 붙일 수 있다!!

 

위의 생성자가 private이기 때문에 아래처럼 접근이 가능하다!

val person = Person.newBaby("ee")
person.name
person.age

2. 싱글톤

싱글톤이란 단 하나의 인스턴스만을 갖는 클래스이다.

자바에서 싱글톤을 구현할 때 조금 복잡한 부분이 있었지만 코틀린에서는 아래와 같이 간단히 구현가능하다.

object Singleton{
    var a : Int = 0
}

애당초 단 하나의 인스턴스이기 때문에 인스턴스화를 하는게 아니라, 다음과 같이

코드에서 .a .함수 이런식으로 접근이 가능하다!

Singleton.a //이런식으로 접근
Singleton.a += 10

3. 익명클래스

특정 인터페이스나 클래스를 상속받은 구현체를 일회성으로 사용할 때 쓰는 클래스이다.

다음과 같이 자바처럼 new Movable 하는 것이 아니라, object : Movable 이렇게 구현한다.

위의 처럼 object : 타입으로 작성해주어 override해서 사용한다!

 

 

GitHub - SsongSik/Kotlin_Java_Practice: Practice kotlin grammar compared to Kotlin and Java.

Practice kotlin grammar compared to Kotlin and Java. - GitHub - SsongSik/Kotlin_Java_Practice: Practice kotlin grammar compared to Kotlin and Java.

github.com

 

저작자표시 (새창열림)

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

[Kotlin/Basic] 코틀린에서의 배열과 컬렉션  (0) 2022.09.06
[Kotlin/Basic] 코틀린에서의 중첩클래스  (0) 2022.09.01
[Kotlin/Basic] 코틀린에서의 접근제어  (0) 2022.08.23
[Kotlin/Basic] 코틀린에서의 상속  (0) 2022.08.22
[Kotlin/Basic] 코틀린에서의 클래스  (0) 2022.08.15
    'Kotlin/Basic' 카테고리의 다른 글
    • [Kotlin/Basic] 코틀린에서의 배열과 컬렉션
    • [Kotlin/Basic] 코틀린에서의 중첩클래스
    • [Kotlin/Basic] 코틀린에서의 접근제어
    • [Kotlin/Basic] 코틀린에서의 상속
    쏭식
    쏭식

    티스토리툴바