Extension trong Kotlin (Bài 10)

Extension trong Kotlin (Bài 10)

extension trong kotlin
Lập trình Kotlin

Extension trong Kotlin (Bài 10)

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 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à chỉ mở rộng tính năng mà thôi.

Extension trong Kotlin – Mở rộng hàm

Kotlin cho phép chúng ta định nghĩa một hàm mới bên ngoài một class. Ví dụ sau đây, chúng tôi sẽ trình bày 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ụ trên, chúng ta bổ sung thêm hàm addInfo cho lớp Trainee. Điều đặc biệt của 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 gán tuổi cho một học viên.

extension trong kotlin

Từ kết quả 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ị 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.

Extension trong Kotlin – Mở rộng đối tượng

Trong Java muốn gọi một phương thức 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 đ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 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ụ 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à welcome và 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 Java.

Cách gọi 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.

Alert: You are not allowed to copy content or view source !!