728x90
package dataclass
// DataClass 매개체의 데이터를 관리하는 용도로 사용하는 클래스
// abstract, open, sealed, inner 클래스로 정의할 수 없다.
// 반드시 주 생성자를 가지고 있어야 한다.
fun main() {
val obj1 = TestClass1(100, 200)
val obj2 = TestClass2(100, 200)
var obj5 = TestClass1(100, 200,300)
var obj6 = TestClass1(100, 200,300)
if (obj5 == obj6) {
println("같은객체")
}
else{
println("다른 객체")
}
var obj7 = TestClass2(100, 200,300)
var obj8 = TestClass2(100, 200,300)
if (obj7 == obj8) {
println("같은객체")
}
else{
println("다른 객체")
}
val obj9 = obj7.copy()
println("obj9 = ${obj9.a1}")
println("obj9 = ${obj9.a2}")
println("obj9 = ${obj9.a3}")
println("obj9 = ${obj7}")
// 주생성자 생성시 입력한 파라미터 순서대로
val num1 = obj7.component1()
val num2 = obj7.component2()
println("num1 = ${num1}")
println("num2 = ${num2}")
// 객체분해
val (num10, num11) = obj7
println("num10 = ${num10}")
println("num11 = ${num11}")
}
class TestClass1(var a1:Int, var a2:Int){
var a3:Int=0
init {
println("Testclsss1 init")
}
constructor(a1: Int, a2: Int, a3: Int) : this(a1, a2)
{
this.a3 = a3
}
}
// 주생성자를 기준으로 전부 동작
// 주로 사용하는 함수 ==(equals), copy
data class TestClass2(var a1:Int, var a2:Int){
var a3:Int=0
init {
println("Testclsss2 init")
}
constructor(a1: Int, a2: Int, a3: Int) : this(a1, a2)
{
this.a3 = a3
}
}
728x90
'언어 > Kotlin' 카테고리의 다른 글
코틀린 익명 중첩 클래스 (0) | 2022.05.25 |
---|---|
코틀린 Generic (0) | 2022.05.25 |
코틀린 Companion (0) | 2022.05.24 |
코틀린 지연 초기화 (0) | 2022.05.24 |
코틀린 property (0) | 2022.05.24 |