Interface trong Kotlin (Bài 8)

Interface trong Kotlin cũng tương tự như Java. Nghĩa là bên trong interface chỉ chứa những phương thức trừu tượng. Một interface có được cài đặt bởi một lớp và lớp đó phải có nhiệm vụ cài đặt xử lý cho tất cả những phương thức được khai báo bên trong interface.

Interface trong Kotlin – Cú pháp khai báo

Trong Kotlin, chúng ta sử dụng từ khóa interface để định nghĩa một interface

interface tên_interface {
   // Khai báo thuộc tính
   var tên_thuộc_tính
   // Khai báo hàm
   fun tên_function(tham_số_nếu_có)
}

Interface trong Kotlin – Ví dụ khai báo interface tên UserRepository

interface UserRepository {
   fun save(user : User): Boolean
   fun showInfo() {
      println("User repository")
   }
}

Trong ví dụ trên, chúng tôi định nghĩa một interface tên UserRepository. Interface này có 2 hàm là saveshowInfo. Trong đó hàm save là trừu tượng, nhưng hàm showInfo thì có phần xử lý. Và các bạn lưu ý hàm showInfo được gọi là hàm với cài đặt mặc định. Nghĩa là một lớp cài đặt (implement) UserRepository hoặc là viết lại xử lý hoặc sử dụng showInfo mà không cần cài đặt.

Interface trong Kotlin – Cài đặt interface

class tên_class : tên_interface {

}

Ví dụ tạo một lớp tên UserRepositoryImpl cài đặt UserRepository

class UserRepositoryImpl : UserRepository {
  override fun login(user : User) : Boolean {
     println("Save an user into database")
     return true;
  }
}

Interface trong Kotlin – Cài đặt nhiều interface

interface UserRepository {
   fun login(user : User) : Boolean
}

interface ProductRepository  {
   fun save(product : Product)
}

// Cài đặt 2 interface
class Shopping : UserRepository, ProductRepository {
  override fun login(user : User) : Boolean {
    println("Handle login")
    return true;
  }

  override fun save(product : Product) {
    println("Save a product")
  }  
}

Trong ví dụ trên, lớp Shopping cài đặt 2 interface là UserRepository và ProductRepository. Và lớp Shopping phải có nhiệm vụ cài đặt xử lý cho hàm login và hàm save. Đây là xử lý bắt buộc chứ không phải là tùy chọn. Ngoại trừ những hàm có xử lý mặc định.

Interface trong Kotlin – Ví dụ mẫu

Trong bài này, chúng tôi sử dụng eclipse đã cài đặt Kotlin plugin để tạo một Kotlin project. Ngoài eclipse các bạn có thể sử dụng các IDE khác như IntelliJ IDEA.

Trong ví dụ mẫu này, chúng tôi tạo một interface tên UserRepository có 2 phương thức trừu tượng là save và getAll. Đối tượng mà chúng ta save và get là User có các thuộc tính như id, name, gender và address.

Các tính năng của ví dụ mẫu đó là thêm user, hiển thị thông tin tất cả user. Nghiệp vụ không phải là yếu tố quan trọng.

Bước 1: Tạo Kotlin project

Chọn File -> chọn New -> chọn Project…

interface trong kotlin

Chọn Kotlin Project -> chọn Next

Nhập KotlinProject tại Project name -> chọn Finish

Bước 2: Tạo một lớp tên User

Chuột phải lên src -> chọn New -> chọn Other

Chọn Kotlin Class -> chọn Next

Nhập User tại Name -> chọn Finish

Viết xử lý cho lớp User

Bước 3: Tạo interface tên UserRepository

Chuột phải lên src -> chọn New -> chon Other…

Chọn Kotlin Interface  -> chọn Next

Nhập UserRepository tại Name -> chọn Finish

Viết xử lý cho interface

Bước 4: Tạo một class thực hiện implements UserRepository

Viết xử lý cho UserRepositoryImpl (Cài đặt interface)

Bước 5: Tạo một file để chay có tên Program

Chuột phải src -> chọn New -> chọn Other… -> chọn Kotlin File

Nhập Program tại Name -> chọn Finish

Viết xử lý cho Program

Danh sách file của project sau khi đã hoàn thành tất cả các bước trên

Bước 6: Chạy chương trình

Chuột phải lên Program -> chọn Run as -> chọn Kotlin Application

Kết quả sau khi chạy