Kotlin/포스팅

코틀린 공통 메서드

짜집퍼박사(짜박) 2024. 1. 2. 12:09

코틀린에서 클래스의 일반적인 메서드로 사용되는 몇 가지 공통적인 메서드들이 있습니다. 이러한 메서드들은 클래스에서 주로 오버라이드되어 특정한 동작을 수행하도록 하는데, 이를테면 toString(), equals(), hashCode() 등이 있습니다. 아래에서는 이러한 공통 메서드들을 설명하겠습니다.

 

1. toString() 메서드

toString() 메서드는 객체를 문자열로 변환하는 데 사용됩니다. 기본 구현은 객체의 클래스 이름과 해시 코드를 반환합니다. 주로 디버깅이나 로깅을 위해 사용됩니다.

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

fun main() {
    val person = Person("John", 30)
    println(person.toString()) // 출력: Person(name=John, age=30)
}

위의 예제에서 Person 클래스는 data class로 선언되어 있어 toString()이 자동으로 생성되고, 객체를 출력하면 멤버 변수의 이름과 값이 포함된 문자열이 반환됩니다.

 

2. equals() 메서드

equals() 메서드는 두 객체가 같은지 비교합니다. 기본 구현은 참조 동일성(객체의 메모리 주소가 같은지)을 비교합니다. 하지만, 데이터 클래스의 경우 프로퍼티 값이 동일한지를 비교합니다.

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

fun main() {
    val person1 = Person("John", 30)
    val person2 = Person("John", 30)

    println(person1 == person2) // 출력: true
}

위의 예제에서 Person 클래스의 equals()는 프로퍼티 값이 같으면 true를 반환하도록 오버라이드되어 있습니다.

 

3. hashCode() 메서드

hashCode() 메서드는 객체의 해시 코드를 반환합니다. equals()를 오버라이드한 경우, 동일한 객체는 동일한 해시 코드를 가져야 합니다.

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

fun main() {
    val person = Person("John", 30)
    println(person.hashCode())
}

 

4. copy() 메서드

data class에서 자동으로 생성되는 copy() 메서드는 객체를 복제할 때 사용됩니다. 이를 통해 기존 객체를 변경하지 않고 일부 속성을 수정하여 새로운 객체를 생성할 수 있습니다.

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

fun main() {
    val person1 = Person("John", 30)
    val person2 = person1.copy(age = 31)

    println(person1) // 출력: Person(name=John, age=30)
    println(person2) // 출력: Person(name=John, age=31)
}

 

5. componentN() 메서드

data class에서 자동으로 생성되는 componentN() 메서드는 속성에 대한 구성 요소를 반환합니다. 이를 통해 디스트럭처링 선언을 사용할 수 있습니다.

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

fun main() {
    val person = Person("John", 30)
    val (name, age) = person

    println(name) // 출력: John
    println(age)  // 출력: 30
}

이러한 공통 메서드들은 주로 데이터 클래스에서 사용되지만, 클래스에 따라 직접 구현할 수도 있습니다. 이들 메서드는 클래스의 인스턴스를 다룰 때 유용하게 사용되는 기본적인 동작들을 제공합니다.

 

With ChatGPT

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

코틀린 추상클래스의 추상 멤버  (0) 2024.01.02
코틀린 추상 클래스  (0) 2024.01.02
코틀린 상속 캐스팅  (0) 2024.01.02
코틀린 타입 검사  (0) 2024.01.02
코틀린 하위 클래스 초기화  (0) 2024.01.02