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