본문 바로가기
개발/kotlin

[Kotlin] Data Class

by 1인용 놀이터 2025. 4. 18.
728x90
반응형

Data Class (데이터 클래스)

 

코틀린의 데이터 클래스는 데이터를 다루는데 최적화된 클래스로 데이터 보관을 주 목적으로 한다.

데이터 클래스는 일반 클래스와 달리 클래스 생성시 다양한 메소드를 자동으로 생성한다.

 

Data Class 특징

데이터 클래스를 사용하려면 아래의 요건을 충족해야 사용 가능하다.

  • 기본 생성자는 1개 이상의 매개 변수를 가져야 한다.
  • 매개 변수가 없는 생성자를 만들어야 할 때는 프로퍼티의 기본값을 지정해야 한다.
  • 모든 기본 생성자 매개 변수는 val 또는 var로 선언해야 한다.
  • abstract, open, sealed, inner 등의 문법을 사용할 수 없다.
  • 자동으로 생성한 메소드를 오버라이딩 할 경우, 오버라이드 된 메소드를 사용해야 한다.
  • 다른 클래스를 상속 받을 수 없다.

 

Data Class 생성시 제공되는 메소드 및 함수

  • hashCode()
    • 주어진 객체를 해싱 알고리즘에 의해 계산한 int 값을 반환한다. 동일한 객체는 동일한 해시코드를 반환한다.
  • equals()
    • 두 객체가 동일한 값을 담고 값이 일치하는지, 즉 인스턴스 자체가 같은지 비교하여 boolean 값을 반환한다.
  • toString()
    • 인스턴스의 프로퍼티 데이터를 문자열로 출력할 수 있다.
  • componentsN()
    • 객체의 속성을 순서대로 반환하는 함수로 사용자가 직접 호출하기 위한 함수가 아닌 파라미터들을 자동으로 꺼내 쓸 수 있는 기능을 지원한다.
    • 즉, 각 프로퍼티에 번호가 붙어 구조 분해가 가능한 형태가 되는 것이다.
  • copy()
    • 객체를 복사하여 똑같은 내용의 새로운 객체를 만드는 함수다.
    • 새로운 객체를 만들면서 특정 프로퍼티의 데이터를 변경할 수 있다

 

Data class 예제코드

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

 

data class Person(val name: String) {
    var age: Int = 0
}
fun main() {
    val person1 = Person("John")
    val person2 = Person("John")
    person1.age = 10
    person2.age = 20

    println("person1 == person2: ${person1 == person2}")
    // person1 == person2: true

    println("person1 with age ${person1.age}: ${person1}")
    // person1 with age 10: Person(name=John)

    println("person2 with age ${person2.age}: ${person2}")
    // person2 with age 20: Person(name=John)
}

 

 

728x90
반응형