Lập trình Kotlin — Lớp niêm phong (sealed classes)

Liem Vo
Viet Android Developers
2 min readAug 30, 2020

Khái niệm sealed class là một khái niệm mới trong ngôn ngữ Kotlin và chúng ta sẽ biết được lới ích của việc dùng lớp này sau khi đọc qua bài viết này.

Sealed class là được dùng để đại diện cho giới hạn trong kế thừa, khi một giá trị có thể có từ một tập hợp giới hạn, nhưng không thể có bất kỳ kiểu dữ liệu khác. Chúng là, ở một ngữ cảnh nào là sự mở rộng của lớp enum: tập giá trị của một kiểu enum là hạn chế, và mỗi hằng số enum tồn tại chỉ là một đối tượng, ở đây lớp con của lớp sealed có thể có nhiều instance khác nhau và có trạng thái.

Để khai báo lớp sealed thì đặt từ khóa sealed ở trước class và nó có thể có nhiều lớp con, và chúng phải được khai báo cùng file với sealed class. Trước Kotlin 1.1 các lớp con phải được khai báo bên trong sealed class.

sealed class State
object Loading: State()
class Success(val value: Int): State()
class Error(val exception: Exception): State()
  • Lớp sealed class là lớp tự trừu tượng, và nó không được khởi tạo trực tiếp và không có bất — thành viên trừu tượng
  • Tất cả hàm khởi tạo của sealed class mặc định là private
  • Lớp kế thừa từ lớp con của sealed class có thể đặt bất kỳ nơi đâu không cần trong cùng file

Tiện ích:

Điều tiện lợi của việc dùng lớp sealed là khi dùng chúng trong điều kiện when. Chúng ta có thể xác thực tất cả các điều kiện không cần dùng else. Tuy nhiên nó chỉ đúng khi dùng when như một biểu thức và không phải là trạng thái.

fun printResult(state: State) = when(state) {
is Loading -> println("Loading")
is Success -> println("Data is loaded: ${state.value}")
is Error -> println("Exception ${state.exception.message}")
}

Cảm ơn các bạn đã đọc bài. Đăng ký kênh chúng tôi để xem những bài học mới nhất.

Youtube kênh: https://bit.ly/2EFOOXs

Thảo luận bằng cách comment ở đây hoặc trong video của blog này.

--

--