티스토리 뷰

Kotlin

[Kotlin] object 키워드

hyuuny 2022. 6. 14. 21:54

방송통신대학교 기말 시험 준비로 포스팅을 하지 못했는데, 3학년 1학기가 종강된 기념으로 오랜만에 글을 작성한다.



이번 포스팅에서는 코틀린에서 object 키워드를 다루는 방법에 대해서 알아보자!


1. static 함수와 변수
2. 싱글톤
3. 익명 클래스


static 함수와 변수

Java

public class PersonJava {

  private static final int MIN_AGE = 1;

  public static PersonJava newPerson(String name) {
    return new PersonJava(name, MIN_AGE);
  }

  private String name;

  private int age;

  private PersonJava(String name, int age) {
    this.name = name;
    this.age = age;
  }

}

Kotlin

class PersonKo private constructor(
    var name: String,
    var age: Int,
) {

    companion object {
        val MIN_AGE = 1
        fun newPerson(name: String): PersonKo {
            return PersonKo(name, MIN_AGE)
        }
    }

}

코틀린에서는 자바의 static 대신에 companion object를 사용한다.
companion object는 하나의 객체로 간주되기 때문에, 이름을 붙일 수도 있고, interface를 구현할 수도 있다.

    companion object Factory  {
        private const val MIN_AGE = 1
        fun newPerson(name: String): PersonKo {
            return PersonKo(name, MIN_AGE)
        }
    }

만약 자바에서 코틀린의 companion object를 사용해야 한다면, @JvmStatic을 이용하면 된다.

 companion object Factory  {
        private const val MIN_AGE = 1

        @JvmStatic
        fun newPerson(name: String): PersonKo {
            return PersonKo(name, MIN_AGE)
        }
    }
public class Main {

  public static void main(String[] args) {
    PersonKo seonghyunKim = PersonKo.newPerson("김성현");
    System.out.println("name=" + seonghyunKim.getName());
  }

}


싱글톤

Java

public class SingletonJa {

  private static final SingletonJa INSTANCE = new SingletonJa();

  private SingletonJa() {}

  public static SingletonJa getInstance() {
    return INSTANCE;
  }

}

Kotlin

object SingletonKo {}

코틀린에서의 싱글톤은 object SingletonKo(클래스 이름)이 전부이다.
자바와 비교했을 때, 상당히 간결하게 작성할 수 있다는 것을 확인할 수 있다.


익명 클래스

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

Java

  public static void main(String[] args) {
    moveSomething(new Movable() {
      @Override
      public void move() {
        System.out.println("뚜벅뚜벅..");
      }

      @Override
      public void fly() {
        System.out.println("파닥파닥~");
      }
    });
  }

  public interface Movable {
    void move();
    void fly();
  }

  private static void moveSomething(Movable movable) {
    movable.move();
    movable.fly();
  }

Kotlin

fun main() {
    moveSomething(object : Movable {
        override fun move() {
            println("뚜벅뚜벅..")
        }

        override fun fly() {
            println("파닥파닥~")
        }

    })
}

private fun moveSomething(movable: Movable) {
    movable.move()
    movable.fly()
}

자바에서는 new 타입이름()을 사용했다면, 코틀린에서는 object : 타입이름을 사용하여 익명 클래스를 다룬다.


정리

  • Java의 static 변수 및 함수를 만드려면, Kotlin의 companion object를 사용하자.
  • companion object도 하나의 객체로 간주되기 때문에, 이름을 붙일 수 있고, 다른 타입을 상속받을 수도 있다.
  • Kotlin에서 싱글톤 클래스를 만들 때, object키워드를 사용한다.
  • Kotlin에서 익명 클래스를 만들 때, object : 타입을 사용한다.

'Kotlin' 카테고리의 다른 글

[Kotlin] Collection  (0) 2022.06.19
[Kotlin] 클래스  (0) 2022.06.17
[Kotlin] 접근 제한자(Visibility Modifier)  (0) 2022.06.07
[Kotlin] 예외를 처리하는 방법  (0) 2022.06.02
[Kotlin] 반복문  (0) 2022.06.01
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/01   »
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
글 보관함