📦 데이터 클래스
📖 데이터 클래스란?
**데이터 클래스(Data Class)**는 데이터를 보관하는 특별한 클래스입니다. 자동으로 유용한 메서드들을 생성해줍니다.
💡 기본 사용법
일반 클래스 vs 데이터 클래스
// 일반 클래스
class Person1(val name: String, val age: Int)
// 데이터 클래스
data class Person2(val name: String, val age: Int)
fun main() {
val p1 = Person1("홍길동", 25)
val p2 = Person2("홍길동", 25)
println(p1) // Person1@해시코드
println(p2) // Person2(name=홍길동, age=25) ← 자동 toString!
}
자동 생성 메서드
data class Person(val name: String, val age: Int)
fun main() {
val person = Person("홍길동", 25)
// toString() - 자동 생성
println(person) // Person(name=홍길동, age=25)
// equals() - 내용 비교
val other = Person("홍길동", 25)
println(person == other) // true
// hashCode() - 해시 코드
println(person.hashCode())
// copy() - 복사
val copy = person.copy()
println(copy) // Person(name=홍길동, age=25)
}
🔧 copy 메서드
부분 수정
data class Person(val name: String, val age: Int, val email: String)
fun main() {
val person = Person("홍길동", 25, "hong@example.com")
// 나이만 변경
val older = person.copy(age = 30)
println(older)
// Person(name=홍길동, age=30, email=hong@example.com)
// 이메일만 변경
val newEmail = person.copy(email = "new@example.com")
println(newEmail)
}