枚举:
由于这个比较简单,直接上代码:
下面使用一下:
印章类【Sealed class】:
听着挺新鲜的,下面以一个具体的场景来对它进行学习:
动物园里有三个动物如下,在天黑时它们污污的在做“游戏”,于是乎会发生如下关系:
公马 + 母驴 = 骡子
公驴 + 母驴 = 小驴
而这种场景刚好就可以用这个印章类来描述,下面看下代码:
而咱们这个例子最终的产出只有两种类型:小骡子和小小驴,不可能有其它类型,在Kotlin中针对这种场景就诞生出了印章类,那具体表现是怎么样的呢?
接着在它里面声明指定的类型,如下:
接着在Son类中可以增加一个方法:
接下来应用一下:
因为它只能用它里面指定的类型,类似于跟枚举一样,具体使用如下:
接下来则可以多生成几个儿子,并放一个集合中进行遍历:
所以可见印章类其实就是子类类型有限的class。
总结:
貌似印章类其实跟枚举是很类似的,都是限定了类型,但是它们俩还是有区别的,如下:
Sealed class更在意类型;枚举更在意数据。