Trong bài viết này, bạn sẽ học cách tạo và sử dụng các đối tượng companion trong chương trình Kotlin của mình với sự trợ giúp của các ví dụ.

Trước khi nói về các đối tượng companion, hãy lấy một ví dụ để truy cập các thành viên của một class.

class Person {
    fun callMe() = println("I'm called.")
}

fun main(args: Array<String>) {
    val p1 = Person()
    
    // calling callMe() method using object p1
    p1.callMe()    
}

Ở đây, chúng ta đã tạo một đối tượng p1 của class Person để gọi hàm callMe(). Đó là cách làm thông thường.

Tuy nhiên, trong Kotlin, bạn cũng có thể gọi  hàm callMe() bằng cách sử dụng tên class, tức là class Person trong trường hợp này. Vì vậy, bạn cần tạo một đối tượng companion bằng cách đánh dấu khai báo đối tượng với từ khóa companion.

Ví dụ về đối tượng companion

class Person {
    companion object Test {
        fun callMe() = println("I'm called.")
    }
}

fun main(args: Array<String>) {
    Person.callMe()
}

Khi bạn chạy chương trình, kết quả sẽ là:

I'm called.

Trong chương trình trên, khai báo đối tượng Test được đánh dấu bằng từ khóa companion để tạo một đối tượng companion. Do đó, có thể gọi hàm callMe() bằng cách sử dụng tên của class là:

Person.callMe()

Tên của đối tượng companion là tùy chọn và có thể được bỏ qua.

class Person {
    
    // name of the companion object is omitted
    companion object {
        fun callMe() = println("I'm called.")
    }
}

fun main(args: Array<String>) {
    Person.callMe()
}

Nếu bạn đã quen với Java, bạn có thể liên hệ các đối tượng companion với các hàm tĩnh (mặc dù cách chúng hoạt động bên trong hoàn toàn khác nhau).

Các đối tượng companion có thể truy cập các thành viên riêng tư của class. Do đó, chúng có thể được sử dụng để thực hiện factory phương thức patterns .

Tài liệu từ cafedev:

Nếu bạn thấy hay và hữu ích, bạn có thể tham gia các kênh sau của cafedev để nhận được nhiều hơn nữa:

Chào thân ái và quyết thắng!

Đăng ký kênh youtube để ủng hộ Cafedev nha các bạn, Thanks you!