Kotlin/포스팅

코틀린 객체 식

짜집퍼박사(짜박) 2023. 12. 30. 22:55

코틀린의 "객체 식"은 일반적으로 인터페이스나 추상 클래스의 인스턴스를 생성할 때 사용됩니다. 객체 식을 사용하면 익명으로 생성된 객체를 정의하고 해당 객체의 메서드를 구현할 수 있습니다. 객체 식은 Java의 익명 내부 클래스와 유사한 개념이며, 주로 람다나 함수형 인터페이스를 대체하는 데에 사용됩니다.

 

기본 구조

val myInterfaceImplementation: MyInterface = object : MyInterface {
    override fun myFunction() {
        println("Implementation of myFunction in object expression")
    }
}

위의 코드에서 MyInterface는 인터페이스이며, 해당 인터페이스의 인스턴스를 생성하는 익명의 객체를 정의하고 있습니다.

 

객체 식의 특징

1. 인터페이스나 추상 클래스의 인스턴스 생성: 주로 객체 식은 인터페이스나 추상 클래스의 인스턴스를 생성하는 데 사용됩니다.

interface MyInterface {
    fun myFunction()
}

val myObject: MyInterface = object : MyInterface {
    override fun myFunction() {
        println("Implementation of myFunction")
    }
}

2. 객체 식 내에서 메서드 구현: 객체 식 내부에서는 해당 인터페이스나 추상 클래스의 메서드를 구현할 수 있습니다.

val myObject: MyInterface = object : MyInterface {
    override fun myFunction() {
        println("Implementation of myFunction")
    }

    fun additionalFunction() {
        println("Additional function in object expression")
    }
}

객체 식 내에서 메서드 외에도 추가적인 멤버를 정의할 수 있습니다.

3. 객체 식의 반환 값: 객체 식은 해당 인터페이스나 추상 클래스의 인스턴스를 생성하며, 이 인스턴스는 변수에 할당될 수 있습니다.

val myObject: MyInterface = object : MyInterface {
    override fun myFunction() {
        println("Implementation of myFunction")
    }
}

4. 함수 리터럴과의 비교: 객체 식은 함수 리터럴과 유사하게 생겼지만, 함수 리터럴은 주로 람다식을 의미하며, 객체 식은 인터페이스나 추상 클래스의 인스턴스를 생성하는 데에 사용됩니다.

// 함수 리터럴 (람다식)
val lambdaFunction: () -> Unit = {
    println("Lambda function")
}

// 객체 식
val myObject: MyInterface = object : MyInterface {
    override fun myFunction() {
        println("Implementation of myFunction")
    }
}

 

객체 식은 주로 인터페이스나 추상 클래스를 사용하는 함수형 프로그래밍 패러다임에서 활용되며, 특히 Java에서의 익명 내부 클래스와 유사한 역할을 합니다.

 

With ChatGPT

'Kotlin > 포스팅' 카테고리의 다른 글

코틀린 함수 타입  (0) 2023.12.30
코틀린 고차 함수  (0) 2023.12.30
코틀린 동반 객체  (0) 2023.12.30
코틀린 객체 선언  (0) 2023.12.30
코틀린 객체  (0) 2023.12.30