Trong Kotlin, từ khóa object được sử dụng để khai báo một "đối tượng" (object). Một đối tượng là một thực thể duy nhất, độc lập với các lớp (class), mà chỉ có một phiên bản duy nhất trong toàn bộ ứng dụng.
Có hai cách chính để sử dụng object trong Kotlin:
val obj = object {
val name = "John"
val age = 30
fun greet() {
println("Hello, my name is $name and I am $age years old.")
}
}
obj.greet() // In ra: Hello, my name is John and I am 30 years old.
object MySingleton {
fun doSomething() {
println("Doing something...")
}
}
MySingleton.doSomething() // In ra: Doing something...
Trong cả hai trường hợp, object đều tạo ra một đối tượng duy nhất mà bạn có thể truy cập trực tiếp mà không cần tạo một phiên bản mới từ class.
Trong Kotlin, một "data class" là một lớp được thiết kế đặc biệt để lưu trữ và xử lý dữ liệu. Kotlin cung cấp data class như một cách tiện lợi để định nghĩa các lớp chỉ chứa dữ liệu mà không cần triển khai nhiều mã boilerplate.
Khi bạn khai báo một lớp là một data class, Kotlin sẽ tự động tạo ra một số thành phần chuẩn bao gồm các hàm equals(), hashCode(), toString(), và một hàm copy(). Điều này giúp làm cho việc làm việc với dữ liệu trong các data class trở nên đơn giản hơn và giảm thiểu lượng mã mà bạn cần phải viết.
Dưới đây là một ví dụ đơn giản về một data class trong Kotlin:
data class Person(val name: String, val age: Int)
Với đoạn mã trên, Kotlin sẽ tự động tạo ra các hàm equals(), hashCode(), toString() và một hàm copy() cho lớp Person.
val person1 = Person("Alice", 30)
val person2 = Person("Alice", 30)
println(person1 == person2) // In ra: true
val person3 = person1.copy(name = "Bob")
println(person3) // In ra: Person(name=Bob, age=30)
Như bạn có thể thấy, với data class, bạn có thể so sánh các đối tượng dựa trên nội dung của chúng bằng cách sử dụng ==, và bạn cũng có thể tạo bản sao của đối tượng một cách dễ dàng bằng cách sử dụng hàm copy().
equals(), hashCode(), toString(), và copy() nếu cần thiết.