Data Class 는 Data 보관 목적으로 만든 클래스를 말합니다.
toString(), hashcode(), equals(), copy() 메소드를 자동으로 만들어줍니다.
데이터를 보관하는 것이 주 목적인 클래스를 만들면 거의 필수적으로
getters(), setters(), toString(), copy(), componentN() 등
과 같은 기능을 만들어야 합니다.
이러한 기능들을 데이터 클래스를 만들 때마다 작성하는 것은 비효율적이므로 data 를 앞에 붙이면 kotlin 이 자동으로 위와 같은 기능들을 추가하게 만들었습니다.
data class Song(
val title : String = "",
val singer : String = ""
)
위와 같이 class 앞에 data 를 붙여서 사용합니다.
toString() 은 생성자에 정의된 프로퍼티만 출력합니다.
hashCode() 는 class 객체일 때는 다른 값을 리턴하고, data class 일 때는 같은 값을 리턴합니다.
copy() 는 배열 같은 곳에서 하나의 값만 변경할 때 사용하기에 좋습니다.
val song1 = Song("노래 제목", "가수")
val song2 = song1.copy(title="제목2")