[kotlin] 데이터 바인딩 오버라이딩
코틀린에서, 데이터 클래스를 사용하면 클래스의 속성을 선언하고 equals()
, hashCode()
, toString()
과 같은 메서드들을 자동으로 생성할 수 있습니다. 그렇지만 때때로 이러한 자동 생성된 메서드들을 오버라이딩해야 할 때가 있습니다.
equals()
메서드 오버라이딩
예를 들어, 데이터 클래스 Person
이 있고 여기에 equals()
메서드를 따로 오버라이딩하고 싶을 때가 있습니다. 이를 위해서는 아래와 같이 오버라이딩 할 수 있습니다.
data class Person(val name: String, val age: Int) {
override fun equals(other: Any?): Boolean {
if (this === other) return true
if (other !is Person) return false
return name == other.name && age == other.age
}
}
위의 코드에서 equals()
메서드를 오버라이딩하여 Person
객체의 name
과 age
를 비교하여 동등성을 판단하도록 했습니다.
hashCode()
메서드 오버라이딩
hashCode()
메서드를 오버라이딩하여 해시 값을 직접 계산할 수도 있습니다. 이 때, equals()
메서드를 오버라이딩한 것과 같은 기준으로 hashCode()
를 계산해야 합니다.
data class Person(val name: String, val age: Int) {
override fun equals(other: Any?): Boolean { /*...*/ }
override fun hashCode(): Int {
var result = name.hashCode()
result = 31 * result + age
return result
}
}
toString()
메서드 오버라이딩
toString()
메서드를 오버라이딩하여 객체의 문자열 표현을 변경할 수도 있습니다.
data class Person(val name: String, val age: Int) {
override fun toString(): String {
return "이름: $name, 나이: $age"
}
}
요약
코틀린에서는 데이터 클래스를 사용하여 자동으로 메서드들을 생성할 수 있지만, 필요에 따라 이러한 메서드들을 오버라이딩하여 동작을 변경할 수 있습니다. 위의 예제 코드들은 이를 설명하기 위한 간단한 예제일 뿐이며, 실제 프로젝트에서는 자신의 상황과 요구에 맞게 적절히 사용해야 합니다.
내용은 여기까지입니다. 추가로 필요한 내용이 있으면 언제든지 말씀해주세요.