在 Android 中,sealed
類是一種特殊的類,用于表示限定的類繼承結構。sealed
類本身不能直接實例化,只有它的子類可以實例化。這樣可以確保所有可能的實例都是預定義的子類之一。要實現數據封裝,你可以將數據存儲在 sealed
類的子類中,并通過方法或屬性來訪問這些數據。
下面是一個使用 Kotlin 編寫的示例,展示了如何使用 sealed
類實現數據封裝:
// 定義一個 sealed 類表示形狀
sealed class Shape {
// 定義一個抽象方法計算面積
abstract fun area(): Double
}
// 定義一個矩形類,繼承自 Shape
data class Rectangle(val width: Double, val height: Double) : Shape() {
// 實現計算面積的方法
override fun area(): Double = width * height
}
// 定義一個圓形類,繼承自 Shape
data class Circle(val radius: Double) : Shape() {
// 實現計算面積的方法
override fun area(): Double = Math.PI * radius * radius
}
fun main() {
// 創建一個矩形實例
val rectangle = Rectangle(4.0, 5.0)
// 創建一個圓形實例
val circle = Circle(3.0)
// 打印矩形和圓形的面積
println("Rectangle area: ${rectangle.area()}")
println("Circle area: ${circle.area()}")
}
在這個示例中,我們定義了一個 sealed
類 Shape
,它有一個抽象方法 area()
。然后我們定義了兩個子類 Rectangle
和 Circle
,分別表示矩形和圓形。這兩個子類都實現了 area()
方法,用于計算面積。我們還使用了 Kotlin 的 data
類來實現數據封裝,將寬度、高度和半徑作為屬性存儲在子類中。
這樣,我們就可以通過 Shape
類的子類來表示不同的形狀,并通過 area()
方法來計算它們的面積。由于 Shape
是一個 sealed
類,我們可以確保所有可能的形狀實例都是預定義的子類之一。