//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() }
发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/226147.html原文链接:https://javaforall.net
