Data Class 정리

ether·2022년 3월 24일
0

android

목록 보기
1/8

Data Class 란?

Data Class 는 Data 보관 목적으로 만든 클래스를 말합니다.
toString(), hashcode(), equals(), copy() 메소드를 자동으로 만들어줍니다.

Data Class 사용 이유

데이터를 보관하는 것이 주 목적인 클래스를 만들면 거의 필수적으로
getters(), setters(), toString(), copy(), componentN() 등
과 같은 기능을 만들어야 합니다.
이러한 기능들을 데이터 클래스를 만들 때마다 작성하는 것은 비효율적이므로 data 를 앞에 붙이면 kotlin 이 자동으로 위와 같은 기능들을 추가하게 만들었습니다.

사용 예시

data class Song(
        val title : String = "",
        val singer : String = ""
)

위와 같이 class 앞에 data 를 붙여서 사용합니다.

Data Class 의 특징

  • 상속받을 수 없습니다.
  • 생성자 프로퍼티는 val 또는 var 로 선언해야 합니다.
  • 데이터 클래스에 abstracted, open, sealed, inner 를 붙일 수 없습니다.
    (업데이트 이후에 sealed 는 상속이 가능하게 되었다고 합니다.)
  • 1개 이상의 프로퍼티를 가지고 있어야 합니다.
  • 클래스에서 toString(), hashCode(), equals(), copy() 를 Override 하면 그 함수는 직접 구현된 코드를 사용합니다.

Data Class 사용해보기

  • toString() 은 생성자에 정의된 프로퍼티만 출력합니다.

  • hashCode() 는 class 객체일 때는 다른 값을 리턴하고, data class 일 때는 같은 값을 리턴합니다.

  • copy() 는 배열 같은 곳에서 하나의 값만 변경할 때 사용하기에 좋습니다.

val song1 = Song("노래 제목", "가수")
val song2 = song1.copy(title="제목2")
  • equals() 는 값이 동일한 지 확인해줍니다. (== 의 역할)
    cf. == 은 값이 같으므로 true가 출력되지만 메모리상 다른 객체를 참조하고 있으므로 === 에서는 false가 출력됩니다.
profile
Backend Developer

0개의 댓글