Kotlin 컴패니언 개체를 사용하는 시기와 위치

Kailash Vaviya 2024년2월15일
  1. Java 정적 메소드
  2. Kotlin 컴패니언 객체
  3. 언제 Kotlin companion 객체를 사용해야 합니까?
Kotlin 컴패니언 개체를 사용하는 시기와 위치

Kotlin, Java 또는 C#과 같은 객체 지향 프로그래밍 언어에서는 멤버에 액세스하기 위해 클래스의 객체를 만들어야 합니다. Kotlin에서는 다음과 같이 표시됩니다.

class className{
    fun funName() = // code will come here
}
fun main(){
    val obj = className()
    obj.funName() // calling the function using the class's object
}

그러나 개체를 만들지 않고 클래스의 메서드에 액세스할 수 있는 방법이 있습니다. 여기서 Java의 “정적” 객체와 Kotlin의 “동반자” 객체가 등장합니다.

이 글에서는 companion 객체와 이를 Kotlin에서 사용하는 방법에 대해 알아봅니다. 그러나 그것에 들어가기 전에 Java의 정적 메서드의 예를 살펴보겠습니다.

Java 정적 메소드

Java는 객체를 생성하지 않고 객체 지향 프로그래밍 접근 방식을 따를 수 있습니다. 정적 개체 또는 인스턴스를 사용하여 이를 수행합니다.

static 키워드를 사용하면 클래스 내에서 정적 변수 또는 메서드를 생성할 수 있습니다. 이러한 변수 또는 메서드는 일정하게 유지되며 초기화 후에는 변경할 수 없습니다.

Java에서 정적 키워드의 가장 중요한 용도는 메모리 관리입니다. 객체를 생성하지 않고도 정적 변수와 메서드에 액세스할 수 있으므로 메모리가 절약됩니다.

클래스 이름을 사용하여 이러한 메서드에 액세스할 수 있습니다.

아래의 Java 프로그램은 동일한 것을 보여줍니다. 이 프로그램의 cubeNumber()는 정적 메서드입니다.

정수 매개 변수를 사용하고 해당 큐브를 반환합니다.

import java.util.*;

public class Example {
  public static void main(String[] args) {
    int res = Example.cubeNumber(3);
    System.out.println("Cube of 3 is: " + res);
  }

  public static int cubeNumber(int i) {
    return i * i * i;
  }
}

Java의 정적 메서드

보시다시피 cubeNumber()는 위의 예에서 정적 메소드입니다. 따라서 클래스 이름을 사용하여 호출할 수 있습니다.

Kotlin 컴패니언 객체

Java에는 정적 메소드가 있지만 Kotlin에는 정적이 없습니다. 여전히 그러한 변수를 생성하는 방법이 있지만 접근 방식이 다릅니다.

Kotlin에서는 companion 객체라는 키워드를 사용하여 이러한 메서드를 만듭니다.

companion 키워드는 Java의 static 키워드와 동일하게 작동합니다. 개체 없이 companion 키워드를 사용하여 생성된 메서드에 액세스할 수 있습니다.

다음은 Kotlin에서 companion 개체를 사용하는 방법을 보여주는 예입니다. 이 예에서는 Employee 클래스를 생성합니다.

그런 다음 companion 키워드를 사용하여 직원 이름을 인쇄하고 클래스 개체 없이 액세스하는 함수를 만듭니다.

class Employee {

    companion object {
        fun printName() = println("Hi, my name is David.")
    }
}

fun main(args: Array<String>) {
    Employee.printName()
}

Kotlin 동반 객체 예제 프로그램

함수 이름을 생략할 수도 있습니다. 이 경우 Companion이라는 이름을 사용할 수 있습니다.

언제 Kotlin companion 객체를 사용해야 합니까?

Kotlin companion 개체를 사용하는 가장 좋은 시나리오는 클래스 개체의 상태를 방해하지 않는 경우입니다. 즉, 클래스 자체 외부에서 액세스해야 하는 순수 함수 또는 최종 값을 사용하는 경우 Kotlin companion 개체를 사용할 수 있습니다.

그러나 개체가 클래스 개체의 상태를 방해하는 경우 companion 개체를 사용하지 않는 것이 좋습니다. 이를 사용하면 수많은 오류가 발생할 수 있기 때문입니다.

Kailash Vaviya avatar Kailash Vaviya avatar

Kailash Vaviya is a freelance writer who started writing in 2019 and has never stopped since then as he fell in love with it. He has a soft corner for technology and likes to read, learn, and write about it. His content is focused on providing information to help build a brand presence and gain engagement.

LinkedIn

관련 문장 - Kotlin Object