持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第25天,点击查看活动详情
印章类
印章类又称为密封类,用来表示受限的类继承结构:当一个值为有限几种的类型, 而不能有任何其他类型时。使用sealed关键字修饰类,印章类可以有子类,但是所有的子类都必须要内嵌在印章类中
我们可以用生活中的例子来说明一下:现有母驴、公驴、公马三只动物,我们知道: 母驴+公驴=驴子 母驴+公马=骡子
我们现在创建一个Son class来形容三只动物的儿子,由于只能是驴子,或骡子,所以我们加关键字sealed
fun main(args: Array<String>) {
var son1:Son = Son.donkey()
var son2:Son = Son.mule()
var son3:Son = Son.donkey()
var list = listOf<Son>(son1,son2,son3)
for(s in list){
if(s is Son.donkey){
s.sayHello()
}
}
}
不能直接实例Son的,因为它有关键字sealed,没有构造方法,所以这样写会报错
查看运行结果
大家好
大家好
枚举
kotlin 中也如Java一样,有枚举类这个类型
枚举类的定义:在某些情况下,一个类的是有限而且固定的,比如季节类、月份类、等等,这种实例有限而且固定的类,叫做枚举类
作用:在早期代码中,可能会使用静态常量表示枚举,比如下面定义的常量:
enum class Week{
星期一,星期二,星期三,星期四,星期五,星期六,星期天
}
fun main(args:Array<String>){
println(Week.星期一.ordinal)
println(Week.星期天.ordinal)
}
0
6
枚举类使用关键字enum标记,enum关键字在类头中的class关键字前面
两者区别
印章类其实跟枚举是很类似的,都是限定了类型,但是它们俩还是有区别的: Sealed class 更在意类型 枚举类更在意数据