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
반응형
'개발 > kotlin' 카테고리의 다른 글
| [kotlin] 로또번호 랜덤 생성기 - 3 (Activity 작업) (3) | 2025.05.29 |
|---|---|
| [Kotlin] 로또번호 랜덤 생성기 - 2 (Layout 파일 생성) (1) | 2025.05.13 |
| [Kotlin] 코틀린에서 뷰 바인딩(View Binding) (0) | 2025.03.27 |
| [Kotlin] tools:ignore="UselessParent" (0) | 2025.02.03 |
| [Kotlin] 로또번호 랜덤 생성기 - 1(프로젝트 생성) (0) | 2025.01.20 |