코틀린에서 데이터를 모델링하고 간편하게 클래스를 생성하기 위해 데이터 클래스(data class)를 제공합니다. 데이터 클래스는 데이터를 표현하는 데 특화된 클래스로, 자동으로 생성되는 몇 가지 기능을 제공하여 코드를 간결하게 작성할 수 있게 도와줍니다.
아래는 코틀린 데이터 클래스의 특징과 사용법에 대한 설명입니다.
1. 주 생성자에 선언된 프로퍼티들
data class Person(val name: String, val age: Int)
위의 코드에서 Person은 name과 age라는 두 개의 프로퍼티를 가진 데이터 클래스입니다. 주 생성자에 선언된 프로퍼티들은 자동으로 읽기 전용(getter)이 생성되며, 데이터 클래스에서는 일반적으로 읽기/쓰기 메서드가 필요하지 않습니다.
2. 자동으로 생성되는 toString()
val person = Person("John", 25)
println(person) // 출력: Person(name=John, age=25)
데이터 클래스는 toString() 메서드를 자동으로 생성하여 객체의 내용을 문자열로 표현합니다.
3. 자동으로 생성되는 equals()와 hashCode()
val person1 = Person("John", 25)
val person2 = Person("John", 25)
println(person1 == person2) // 출력: true
println(person1.hashCode() == person2.hashCode()) // 출력: true
데이터 클래스는 프로퍼티 값들을 기반으로 equals()와 hashCode() 메서드를 자동으로 생성합니다.
4. 복사 메서드(copy())
val person = Person("John", 25)
val personCopy = person.copy()
println(person == personCopy) // 출력: true
데이터 클래스는 copy() 메서드를 제공하여 객체의 복사본을 생성할 수 있습니다. 이때, 일부 프로퍼티를 변경할 수 있습니다.
5. 구조 분해 선언
val person = Person("John", 25)
val (name, age) = person
println("Name: $name, Age: $age")
데이터 클래스는 구조 분해 선언을 지원하며, 이를 사용하여 객체의 각 프로퍼티에 쉽게 접근할 수 있습니다.
6. 프로퍼티의 기본 값
data class Person(val name: String = "", val age: Int = 0)
프로퍼티에 기본 값을 지정할 수 있습니다.
7. 복합 프로퍼티
data class Address(val city: String, val street: String)
data class Person(val name: String, val age: Int, val address: Address)
데이터 클래스는 다른 데이터 클래스를 포함할 수 있어 복합 프로퍼티를 정의할 수 있습니다.
데이터 클래스는 주로 데이터를 표현하는 데 사용되며, 코드를 간결하게 만들고 유지 보수성을 높일 수 있습니다.하지만, 데이터 클래스를 사용할 때에는 데이터의 불변성을 유지하는 것이 좋습니다.
With ChatGPT
'Kotlin > 포스팅' 카테고리의 다른 글
코틀린 구조 분해 선언 (0) | 2023.12.31 |
---|---|
코틀린 데이터 클래스 연산 (0) | 2023.12.31 |
코틀린 enum 클래스의 공통 멤버 (0) | 2023.12.31 |
코틀린 enum 클래스 사용자 멤버 정의 (0) | 2023.12.31 |
코틀린 enum 클래스 when식 (0) | 2023.12.31 |