58.密封类
2019-10-05 本文已影响0人
写代码的向日葵
1.用法代码如下:
fun main(args: Array<String>) {
val stark1 = NedStark.RobStark()
val hasRight = hasRight(stark1)
println(hasRight)
val jonSnow = JonSnow()
println(hasRight(jonSnow))
}
/**
* 判断有没有继承权
* 先把有继承权的(数量固定)放在一起,其它的不关心
*/
fun hasRight(nedStark: NedStark): Boolean {
return when (nedStark) {
is NedStark.RobStark,
is NedStark.SansaStrk,
is NedStark.AryaStark,
is NedStark.BrandonStark -> true
else -> false
}
}
sealed class NedStark {
class RobStark : NedStark()
class SansaStrk : NedStark()
class AryaStark : NedStark()
class BrandonStark : NedStark()
}
class JonSnow : NedStark()
2.输出结果如下:

- 密封类封装的是类型 类型是确定的
- 枚举封装的是数据,表示数据元素个数是确定的