//sealed class只能有固定数量的子类,而且必须在当前类里边声明
//sealed class的构造方法也是私有的,跟object比较像
//enum是定义有限的对象值,二sealed class是定义有限的子类型
sealed class MySealedClass {
fun action(){
println("I am a sealed class")
}
object SonClass1 : MySealedClass(){
init{
println("SonClass1 was created")}
}
class SonClass2: MySealedClass(){
init {
println("SonClass2 was created")
}
}
}
fun main(){
//MySealedClass.SonClass1 这里他代表MySealedClass.SonClass1的单例实例,因为他是用object修饰的,在类加载时,就会创建一个全局实例
MySealedClass.SonClass1.action()
// 会报错,提示构造方法私有,不能直接调用
//MySealedClass()
//SonClass2这个内部类虽然没有通过object标记,但是也可以通过外部类名来直接访问,说明SonClass2也是静态的。跟使用object的区别是,这里可以定义多个SonClass2的实例
var son1 = MySealedClass.SonClass2()
var son2 = MySealedClass.SonClass2()
}
kotlin sealed关键字
最新推荐文章于 2024-05-30 16:07:28 发布