본문 바로가기
Android/안드로이드 스터디(Kotlin)

Kotlin] 30. 데이터 클래스

by 김마리님 2020. 12. 10.

클래스 중에서는 데이터만 다루는 클래스가 있다. 이 데이터 클래스 앞에 data를 붙이면 데이터를 수월하게 관리할 수 있는데, 장점도 있다.

 

- Any 클래스 내부의 함수들이 자동으로 오버라이딩 된다.

- toString을 사용하면 Employee(name=John, age=32, salary=180) .. 같이 객체 클래스명(프로퍼티 값 모음)으로 리턴된다.

- copy 함수를 사용할 수 있다. 이를 이용하면 객체를 복사할 수 있다.

 

package dataClassEx

data class Employee(val name : String , val age : Int, val salary : Int)

fun main() {
    val first = Employee("John", 32, 180)
    val second = Employee("Page", 34, 200)
    val third = first.copy()

    println(first.toString())
    println(third.toString())
    println(first == second)
    println(first == third)
}

 

결과 :

 

Employee(name=John, age=32, salary=180)
Employee(name=John, age=32, salary=180)
false
true

 

third는 카피되어 first와 같은 객체가 되었다. 따라서 프로퍼티가 같으므로 true가 된다.

 


 

데이터 클래스에 한해 객체를 분해할 수도 있는데,

 

package dataClassEx

data class Employee(val name : String , val age : Int, val salary : Int)

fun main() {
    val (name, age, _) = Employee("John", 32, 180)
    println(name); println(age)
}

 

다음과 같이 객체명을 지정하면 나누어서 객체를 설정할 수 있다. 사용하지 않을 프로퍼티는 _ 로 무시할 수 있다.

 

결과 :

 

John
32

반응형