Kotlin - Phần mở rộng

Trong chương này, chúng ta sẽ tìm hiểu về một tính năng mới khác của Kotlin có tên là “Extension”. Sử dụng tiện ích mở rộng, chúng tôi sẽ có thể thêm hoặc xóa một số chức năng của phương pháp ngay cả khi không kế thừa hoặc sửa đổi chúng. Các phần mở rộng được giải quyết theo thống kê. Nó không thực sự sửa đổi lớp hiện có, nhưng nó tạo ra một hàm có thể gọi có thể được gọi bằng thao tác dấu chấm.

Mở rộng chức năng

Trong phần mở rộng hàm, Kotlin cho phép định nghĩa một phương thức bên ngoài lớp chính. Trong ví dụ sau, chúng ta sẽ thấy cách triển khai tiện ích mở rộng ở cấp chức năng.

class Alien {
   var skills : String = "null"
	
   fun printMySkills() {
      print(skills)
   }		
}
fun main(args: Array<String>) {
   var  a1 = Alien()
   a1.skills = "JAVA"
   //a1.printMySkills()
	
   var  a2 = Alien()
   a2.skills = "SQL"
   //a2.printMySkills()
	
   var  a3 = Alien()
   a3.skills = a1.addMySkills(a2)
   a3.printMySkills()
}
fun Alien.addMySkills(a:Alien):String{
   var a4 = Alien()
   a4.skills = this.skills + " " +a.skills
   return a4.skills
}

Trong ví dụ trên, chúng tôi không có bất kỳ phương thức nào bên trong lớp “Alien” được đặt tên là “addMySkills ()”, tuy nhiên, chúng tôi vẫn đang triển khai cùng một phương thức ở một nơi khác bên ngoài lớp, đây là điều kỳ diệu của phần mở rộng.

Đoạn mã trên sẽ tạo ra kết quả sau trong trình duyệt.

JAVA SQL

Mở rộng đối tượng

Kotlin cung cấp một cơ chế khác để triển khai chức năng tĩnh của Java. Điều này có thể đạt được bằng cách sử dụng từ khóa “đối tượng đồng hành”. Sử dụng cơ chế này, chúng ta có thể tạo một đối tượng của một lớp bên trong một phương thức gốc và sau đó chúng ta có thể gọi phương thức đó bằng cách sử dụng tham chiếu của tên lớp. Trong ví dụ sau, chúng tôi sẽ tạo một “đối tượng đồng hành”.

fun main(args: Array<String>) {
   println("Heyyy!!!"+A.show())
}
class A {
   companion object {
      fun show():String {
         return("You are learning Kotlin from TutorialsPoint.com")
      }
   }
}

Đoạn mã trên sẽ mang lại kết quả sau trong trình duyệt.

Heyyy!!! You are learning Kotlin from TutorialsPoint.com

Ví dụ trên có vẻ giống như static trong Java, tuy nhiên, trong thời gian thực, chúng ta đang tạo một đối tượng như một biến thành viên của cùng một lớp đó. Đây là lý do tại sao nó cũng được bao gồm trong thuộc tính tiện ích mở rộng và có thể được gọi cách khác là tiện ích mở rộng đối tượng. Về cơ bản, bạn đang mở rộng đối tượng của cùng một lớp để sử dụng một số hàm thành viên.