0Pricing
Kotlin Academy · 강의

데이터 클래스 기초: 자동 생성 메서드

데이터 클래스가 equals, hashCode, toString, copy를 어떻게 생성하는지 이해해 보세요.

데이터 클래스 기초: 자동 생성 메서드은(는) CoddyKit의 무료 Kotlin Academy 강의입니다. 이것은 4개 중 1번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Kotlin Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Kotlin Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

데이터 클래스란 무엇입니까

데이터 클래스는 값을 보관하는 것이 주된 목적인 클래스입니다. Kotlin 컴파일러가 equals, hashCode, toString, copy 및 componentN 함수를 자동으로 생성해 줍니다.

데이터 클래스 선언하기

일반 클래스 앞에 data를 붙이십시오. 기본 생성자의 모든 매개변수는 val 또는 var여야 합니다.

data class User(val name: String, val age: Int)
fun main() {
    val u = User("Ada", 35)
    println(u)
}

자동 생성되는 toString

컴파일러는 모든 프로퍼티를 이름과 함께 나열하는 toString을 생성합니다.

data class Point(val x: Int, val y: Int)
fun main() {
    println(Point(3, 5)) // Point(x=3, y=5)
}

자동 생성되는 동등성 비교

equals는 모든 프로퍼티 값을 비교합니다. 필드가 같은 두 인스턴스는 참조 동일성과 관계없이 같습니다.

data class Coord(val lat: Double, val lng: Double)
fun main() {
    val a = Coord(41.0, 29.0)
    val b = Coord(41.0, 29.0)
    println(a == b)      // true (structural)
    println(a === b)     // false (reference)
}

자동 생성되는 hashCode

hashCode는 equals와 일관됩니다. 같은 객체는 같은 해시를 생성하므로 데이터 클래스는 집합과 맵 키에서 올바르게 작동합니다.

data class Key(val id: Int, val tag: String)
fun main() {
    val map = mapOf(Key(1, "a") to "one")
    println(map[Key(1, "a")]) // one
}

자동 생성되는 copy

copy()는 같은 필드 값을 가진 새 인스턴스를 생성하며, 이름이 지정된 인수로 각 필드를 재정의할 수 있습니다.

data class Config(val host: String, val port: Int, val tls: Boolean)
fun main() {
    val dev = Config("localhost", 8080, false)
    val prod = dev.copy(host = "prod.example.com", tls = true)
    println(prod) // Config(host=prod.example.com, port=8080, tls=true)
}

자동 생성되는 구성 요소 함수

각 프로퍼티에 componentN() 함수(component1, component2, ...)가 생성되어 구조 분해를 사용할 수 있습니다.

data class Pair2(val first: String, val second: Int)
fun main() {
    val p = Pair2("Ada", 35)
    val (name, age) = p
    println("$name is $age")
}

데이터 클래스가 하지 않는 일

데이터 클래스는 상속된 필드에 대한 toString을 생성하지 않습니다. 기본적으로 final이며 abstract, open, sealed 또는 inner가 될 수 없습니다.

data class Sample(val n: Int)
// open data class Bad(...) // ERROR
// sealed data class Bad(...) // ERROR
fun main() { println(Sample(1)) }

기본 생성자 외부의 프로퍼티

클래스 본문에 선언된 프로퍼티는 equals, hashCode, toString 또는 copy에 참여하지 않습니다.

data class Person(val name: String) {
    var nickname: String = ""
}
fun main() {
    val a = Person("Ada").apply { nickname = "Augusta" }
    val b = Person("Ada").apply { nickname = "Different" }
    println(a == b)   // true — only name matters
    println(a)         // Person(name=Ada)
}

기본값

data class와 기본 매개변수를 함께 사용하면 유연하게 객체를 생성할 수 있습니다.

data class Request(
    val url: String,
    val method: String = "GET",
    val headers: Map<String, String> = emptyMap()
)
fun main() {
    println(Request("https://api.example.com"))
}

실용적인 DTO 클래스

데이터 클래스는 DTO, API 응답 및 값 객체에 적합합니다.

data class ApiResponse(
    val status: Int,
    val body: String,
    val timestamp: Long
)
fun main() {
    val ok = ApiResponse(200, "{}", System.currentTimeMillis())
    println(ok)
}

빠른 확인

데이터 클래스에 대해 Kotlin 컴파일러가 자동으로 생성하지 않는 메서드는 무엇입니까?

복습

data class는 기본 생성자의 프로퍼티를 바탕으로 equals, hashCode, toString, copy 및 componentN을 자동으로 생성합니다. 생성자 외부의 프로퍼티는 제외됩니다. DTO, 값 객체 및 관련 값을 담는 모든 컨테이너에 데이터 클래스를 사용하십시오.

자주 묻는 질문

“데이터 클래스 기초: 자동 생성 메서드” 강의는 무료인가요?

네 — “데이터 클래스 기초: 자동 생성 메서드” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Kotlin Academy 강의 전체를 잠금 해제할 수 있습니다. Kotlin Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

“데이터 클래스 기초: 자동 생성 메서드”에서 뭘 배우나요?

데이터 클래스가 equals, hashCode, toString, copy를 어떻게 생성하는지 이해해 보세요. 브라우저에서 직접 실행하는 실습 코드로 Kotlin Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

Kotlin Academy을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 Kotlin Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 1번째 강의입니다.

“데이터 클래스 기초: 자동 생성 메서드” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 Kotlin Academy 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 Kotlin Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. 데이터 클래스 기초: 자동 생성 메서드
  2. copy()와 부분 재정의로 복사하기
  3. componentN을 사용한 구조 분해 선언
  4. 컬렉션과 맵 키로 사용하는 데이터 클래스
← Kotlin Academy(으)로 돌아가기