Kotlin/포스팅

코틀린 객체

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

코틀린에서 "객체"는 여러 의미를 가질 수 있습니다. 아래에는 주요한 의미로서의 "객체"에 대한 설명이 있습니다.

 

1. 클래스의 인스턴스

클래스를 기반으로 생성된 실체를 "객체"라고 부릅니다. 클래스는 객체를 생성하는 틀 또는 설계도 역할을 하며, 객체는 그 설계도를 기반으로 생성된 실체입니다.

class Person(val name: String, val age: Int)

// Person 클래스의 인스턴스 (객체) 생성
val person = Person("Alice", 30)

 

2. 객체 선언 (Object Declaration)

코틀린에서는 "객체 선언"을 사용하여 싱글톤 패턴을 간단하게 구현할 수 있습니다. 객체 선언은 클래스의 인스턴스를 하나만 가지는 객체를 정의할 때 사용됩니다.

object SingletonObject {
    fun sayHello() {
        println("Hello from SingletonObject")
    }
}

// 객체 선언에서 정의한 함수 호출
SingletonObject.sayHello()

 

3. 동반 객체 (Companion Object)

클래스 내부에 정의된 객체를 "동반 객체"라고 부릅니다. 동반 객체는 해당 클래스의 인스턴스와 무관하게 호출될 수 있는 함수나 프로퍼티를 정의하는 데 사용됩니다.

class MyClass {
    companion object {
        fun create(): MyClass {
            return MyClass()
        }
    }
}

// 동반 객체에서 정의한 함수 호출
val instance = MyClass.create()

 

4. 익명 객체 (Anonymous Object)

클래스를 정의하지 않고 객체를 생성하여 사용하는 것을 "익명 객체"라고 합니다. 주로 인터페이스나 추상 클래스의 인스턴스를 생성할 때 활용됩니다.

interface MyInterface {
    fun doSomething()
}

fun main() {
    val myObject: MyInterface = object : MyInterface {
        override fun doSomething() {
            println("Doing something...")
        }
    }

    myObject.doSomething()
}

 

5. 객체 표현식 (Object Expression)

클래스를 상속받아 익명으로 객체를 생성할 때 사용되는 것을 "객체 표현식"이라고 합니다.

open class MyBaseClass {
    open fun doSomething() {
        println("Base class is doing something...")
    }
}

val myObject: MyBaseClass = object : MyBaseClass() {
    override fun doSomething() {
        println("Anonymous object is doing something...")
    }
}

myObject.doSomething()

코틀린에서 "객체"라는 용어는 여러 다양한 상황에서 다양한 의미로 사용됩니다. 위에 나열된 것은 그 중 일부에 대한 설명이며, 사용하는 문맥에 따라서 다르게 이해될 수 있습니다.

 

With ChatGPT

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

코틀린 동반 객체  (0) 2023.12.30
코틀린 객체 선언  (0) 2023.12.30
코틀린 지연 계산 프로퍼티와 위임  (0) 2023.12.30
코틀린 커스텀 접근자  (0) 2023.12.30
코틀린 늦은 초기화  (0) 2023.12.30