Extension trong Kotlin
Extension trong Kotlin
Extension trong Kotlin cho phép lập trình viên mở rộng một số chức năng của lớp mà không cần phải kế thừa và sửa đổi chúng. Và phương pháp này không thực sự làm thay đổi những xử lý hiện có mà là chỉ mở rộng tính năng mà thôi.
Giới thiệu về Extension trong Kotlin
Extension là một tính năng quan trọng trong Kotlin cho phép ta mở rộng các lớp đã có sẵn và thêm vào chúng các phương thức hoặc thuộc tính mới mà không cần phải thay đổi mã nguồn của lớp đó.
Extension được định nghĩa bằng cách sử dụng từ khóa fun trong Kotlin và được khai báo bên ngoài các lớp hoặc đối tượng.
Ví dụ, nếu bạn muốn thêm một phương thức mới vào lớp String trong Kotlin để chuyển đổi chuỗi thành chữ hoa, bạn có thể sử dụng Extension để thực hiện điều đó mà không cần phải tạo một lớp mới.
Một số đặc điểm bao gồm:
- Phương thức Extension có thể được gọi trực tiếp trên đối tượng của lớp mà không cần phải tạo một đối tượng mới của lớp đó.
- Phương thức Extension có thể được gọi trên đối tượng null.
- Các phương thức Extension có thể được gọi như các phương thức thông thường của lớp.
- Các thuộc tính Extension cũng được hỗ trợ trong Kotlin.
Sử dụng Extension giúp cho mã nguồn của chúng ta trở nên ngắn gọn và dễ đọc hơn, đồng thời giúp tăng tính linh hoạt và tiện lợi trong việc mở rộng các lớp đã có sẵn.
Extension trong Kotlin là gì?
Extensions trong Kotlin là một tính năng cho phép bạn thêm các phương thức và thuộc tính mới vào một lớp đã tồn tại mà không cần thay đổi mã nguồn ban đầu của lớp đó. Điều này cho phép bạn mở rộng chức năng của các lớp có sẵn mà không cần phải kế thừa từ chúng hoặc tạo ra một lớp con mới.
Mở rộng hàm của extension trong Kotlin
Kotlin cho phép chúng ta định nghĩa một hàm mới phía bên ngoài một class. Ví dụ sau đây, chúng tôi sẽ trình bày về cách bổ sung hàm của một class.
class Trainee {
var name : String = "null"
var age : Int = 0
fun printTrainee() {
println("Ten : $name. Tuoi: $age")
}
}
fun main(args: Array<String>) {
var kylh = Trainee()
kylh.name = "Le Hong Ky"
kylh.printTrainee()
kylh.addInfo("18", kylh)
kylh.printTrainee()
}
fun Trainee.addInfo(info : String, trainee : Trainee) {
trainee.age = info.toInt()
}
Trong ví dụ phía trên, chúng ta bổ sung thêm hàm addInfo cho lớp Trainee. Điều đặc biệt của việc xử lý này là việc bổ sung hàm hoàn toàn nằm ngoài lớp Trainee.
Và hàm addInfo có chức năng là gán tuổi cho một học viên.
Từ kết quả phía trên, chúng ta dễ dàng nhận thấy rằng trước khi bổ sung và gọi hàm addInfo thì thông tin của học viên được hiển thị bao gồm tên và tuổi, trong đó tuổi bằng 0.
Sau khi bổ sung và gọi hàm addInfo thì tuổi của học viên đã được thay đổi thành 18 tuổi.
Mở rộng đối tượng của extension trong Kotlin
Trong Java muốn gọi một phương thức phía bên ngoài lớp trực tiếp thông qua tên lớp thì phương thức đó được khai báo static.
Đối với Kotlin thì điều này được thay thế bằng cách sử dụng từ khóa “companion object“.
Bằng cách này, Kotlin cho phép chúng ta tạo những hàm và sau đó có thể gọi hàm theo tên lớp mà không cần phải tạo đối tượng.
Ví dụ
fun main(args: Array<String>) {
println(Employee.welcome())
var employee = Employee()
employee.display()
}
class Employee {
var id : Int = 0
var name : String = "null"
companion object {
fun welcome() : String {
return("Chao ban da gia nhap cong ty chung toi!")
}
}
fun display() {
println("Ma nhan vien: $id")
println("Ten nhan vien: $name")
}
}
Trong ví dụ phía trên, chúng tôi tạo một lớp Employee gồm 2 thuộc tính là id và name. Ngoài ra, lớp này còn có 2 hàm là hàm welcome và hàm display.
Hàm welcome được khai báo với từ khóa companion object nghĩa là hàm này tương tự phương thức với từ khóa static trong lập trình Java.
Cách gọi của 2 hàm này là hoàn toàn khác nhau.
- Hàm display được gọi bằng cách tạo một đối tượng của lớp Employee
- Hàm welcome được gọi bằng cách sử dụng tên lớp.
Tổng kết
Như vậy, qua bài viết về bài viết phía trên đây, R2S chúng tôi đã giúp bạn hiểu được về giới thiệu về extension trong kotlin, extension trong kotlin là gì?, mở rộng hàm, mở rộng đối tượng.
Đừng quên bỏ lỡ bất cứ bài viết nào của chúng tôi để có thể học thêm nhiều kiến thức hữu ích về lập trình kotlin nhé.
Hãy đến với website của R2S để có thể tìm hiểu sâu hơn vào lập trình và công nghệ thông tin để có thêm nhiều kiến thức về nó hơn nhé.
Bài viết gốc được đăng tải tại giasutinhoc.vn