Kotlin - Giao diện

Trong chương này, chúng ta sẽ tìm hiểu về giao diện trong Kotlin. Trong Kotlin, giao diện hoạt động hoàn toàn tương tự như Java 8, có nghĩa là chúng có thể chứa việc triển khai phương thức cũng như khai báo phương thức trừu tượng. Một giao diện có thể được triển khai bởi một lớp để sử dụng chức năng đã xác định của nó. Chúng tôi đã giới thiệu một ví dụ với giao diện trong Chương 6 - phần “lớp bên trong ẩn danh”. Trong chương này, chúng ta sẽ tìm hiểu thêm về nó. Từ khóa “giao diện” được sử dụng để xác định giao diện trong Kotlin như được hiển thị trong đoạn mã sau.

interface ExampleInterface {
   var myVar: String     // abstract property
   fun absMethod()       // abstract method
   fun sayHello() = "Hello there" // method with default implementation
}

Trong ví dụ trên, chúng ta đã tạo một giao diện có tên là “ExampleInterface” và bên trong chúng ta có một số thuộc tính và phương thức trừu tượng cùng nhau. Hãy xem hàm có tên “sayHello ()”, đây là một phương thức được triển khai.

Trong ví dụ sau, chúng ta sẽ triển khai giao diện trên trong một lớp.

interface ExampleInterface  {
   var myVar: Int            // abstract property
   fun absMethod():String    // abstract method
   
   fun hello() {
      println("Hello there, Welcome to TutorialsPoint.Com!")
   }
}
class InterfaceImp : ExampleInterface {
   override var myVar: Int = 25
   override fun absMethod() = "Happy Learning "
}
fun main(args: Array<String>) {
   val obj = InterfaceImp()
   println("My Variable Value is = ${obj.myVar}")
   print("Calling hello(): ")
   obj.hello()
   
   print("Message from the Website-- ")
   println(obj.absMethod())
}

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

My Variable Value is = 25
Calling hello(): Hello there, Welcome to TutorialsPoint.Com!
Message from the Website-- Happy Learning

Như đã đề cập trước đó, Kotlin không hỗ trợ nhiều phương thức kế thừa, tuy nhiên, điều tương tự có thể đạt được bằng cách triển khai nhiều hơn hai giao diện cùng một lúc.

Trong ví dụ sau, chúng tôi sẽ tạo hai giao diện và sau đó chúng tôi sẽ triển khai cả hai giao diện vào một lớp.

interface A {
   fun printMe() {
      println(" method of interface A")
   }
}
interface B  {
   fun printMeToo() {
      println("I am another Method from interface B")
   }
}

// implements two interfaces A and B
class multipleInterfaceExample: A, B

fun main(args: Array<String>) {
   val obj = multipleInterfaceExample()
   obj.printMe()
   obj.printMeToo()
}

Trong ví dụ trên, chúng tôi đã tạo hai giao diện mẫu A, B và trong lớp có tên “multipleInterfaceExample”, chúng tôi đã triển khai hai giao diện được khai báo trước đó. Đoạn mã trên sẽ mang lại kết quả sau trong trình duyệt.

method of interface A
I am another Method from interface B