58.密封类

作者: 写代码的向日葵 | 来源:发表于2019-10-05 01:53 被阅读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.输出结果如下:

    image.png
    • 密封类封装的是类型 类型是确定的
    • 枚举封装的是数据,表示数据元素个数是确定的

    相关文章

      网友评论

        本文标题:58.密封类

        本文链接:https://www.haomeiwen.com/subject/cvlepctx.html