What is the difference between:
Definition 1
data class Person (var name:String, var age:Int)
Definition 2
class Person (va
Definition 1 (data class Person(var name: String, var age: Int
) is the equivalent of
/* every class by default in kotlin is final but a data class CAN'T be open */
final class Person(var name: String, var age: Int) {
override fun equals(other: Any?): Boolean {
if (this === other) return true
if (other?.javaClass != javaClass) return false
other as Person
if (name != other.name) return false
if (age != other.age) return false
return true
}
override fun hashCode(): Int {
var result = name.hashCode()
result = 31 * result + age
return result
}
}
val person = Person("Name", 123)
Definition 2 (class Person(var name: String, var age: Int
[no data
modifier]) is the equivalent of
class Person(var name: String, var age: Int) {
}
val person = Person("Name", 123)
Definition 3 is the equivalent of
class Person() {
var name: String = ""
var age: Int = 1
}
val person = Person() // name = "", age = 1 (by default)
person.name = "Name"
person.age = 123