728x90
데이터 클래스
데이터 클래스는 data 키워드로 선언하며 자주 사용하는 데이터를 객체로 묶어 준다.
또한, VO 클래스를 편리하게 이용할 수 있게 해준다.
class NonDataClass(val name: String, val email: String, val age: Int)
data class DataClass(val name: String, val email: String, val age: Int)
fun main(){
val non1 = NonDataClass("kuka", "a@a.com", 10)
val non2 = NonDataClass("kuka", "a@a.com", 10)
val data1 = DataClass("kuka", "a@a.com", 10)
val data2 = DataClass("kuka", "a@a.com", 10)
println("non data class equals : ${non1.equals(non2)}")
println("data class equals : ${data1.equals(data2)}")
}
- equal() 함수로 일반 클래스의 객체를 비교하면 객체 자체를 비교하므로 결괏값은 false이다.
- 하지만 데이터 클래스의 객체를 비교하면 객체 자체가 아니라 객체의 데이터를 비교하므로 true이다.
- 이처럼 data 클래스를 이용하면 객체의 데이터를 비교할 때 훨씬 편리하다.
728x90
컴패니언 클래스
- 클래스 이름으로 멤버에 접근할 수 있게 하려면 companion이라는 키워드로 선언해야 한다.
- 아래 예제와 같이 클래스 내부에 companion object { } 형태로 선언하면 이 클래스를 감싸는 클래스 이름으로 멤버에 접근할 수 있다.
class KukaClass {
companion object {
var data = 10
fun some() {
println(data)
}
}
}
fun main(){
KukaClass.data = 20
KukaClass.some()
}
출처 : 깡샘의 안드로이드 프로그래밍 with 코들린 (강성윤 저)
728x90
'Kotlin 앱 프로그래밍' 카테고리의 다른 글
(코틀린 버전) 안드로이드 푸시알림 spring boot 서버 개발 (0) | 2023.06.20 |
---|---|
(코틀린) 람다함수와 고차함수 (0) | 2023.05.28 |
(코틀린) 상속과 오버라이딩 (0) | 2023.05.22 |
(코틀린) 주 생성자와 보조 생성자 (0) | 2023.05.22 |
코틀린 널 안정성 연산자 (0) | 2023.05.21 |