Kotlin 密封類(sealed class)是一種限制其子類的類。它主要用于表示限定的類繼承結構,以避免出現不受控制的類繼承。密封類在 Kotlin 中的主要作用如下:
限制子類數量:密封類只允許一定數量的子類,這有助于確保代碼的可維護性和可讀性。通過使用密封類,您可以更好地控制程序中的類之間的關系和結構。
提高類型安全性:由于密封類限制了子類的數量,因此可以避免出現不受控制的類繼承。這有助于提高代碼的類型安全性,減少潛在的錯誤。
使用 when
表達式進行模式匹配:密封類可以與 Kotlin 的 when
表達式一起使用,以便更簡潔地處理多種情況。當您需要根據不同的子類執行不同的操作時,when
表達式可以簡化代碼并提高可讀性。
下面是一個簡單的 Kotlin 密封類示例:
// 定義一個密封類 Shape
sealed class Shape {
data class Circle(val radius: Double) : Shape()
data class Rectangle(val width: Double, val height: Double) : Shape()
data class Triangle(val base: Double, val height: Double) : Shape()
}
fun area(shape: Shape): Double {
return when (shape) {
is Shape.Circle -> Math.PI * shape.radius * shape.radius
is Shape.Rectangle -> shape.width * shape.height
is Shape.Triangle -> 0.5 * shape.base * shape.height
}
}
fun main() {
val circle = Shape.Circle(5.0)
val rectangle = Shape.Rectangle(4.0, 6.0)
val triangle = Shape.Triangle(3.0, 7.0)
println("Circle area: ${area(circle)}")
println("Rectangle area: ${area(rectangle)}")
println("Triangle area: ${area(triangle)}")
}
在這個示例中,我們定義了一個名為 Shape
的密封類,它具有三個子類:Circle
、Rectangle
和 Triangle
。然后,我們使用 when
表達式根據不同的子類計算面積。