Kotlin 앱 프로그래밍

(코틀린) 데이터 클래스와 컴패니언 클래스

쿠카이든 2023. 5. 22. 16:05
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