美文网首页
Kotlin零基础学习 印章类 sealed

Kotlin零基础学习 印章类 sealed

作者: __素颜__ | 来源:发表于2019-01-17 17:13 被阅读16次

    一.印章类

    印章类关键字sealed 主要目的限定子类类型。

    那么kotlin为什么会引入印章类概念,举一个生活中的例子。

    动物园里有三个动物,母驴、公马、公驴,他们三个会繁衍什么后代呢?


    image.png

    科学告诉我们就两种:骡子和小驴

    image.png

    马+驴=骡子,因为马有64条染色体,驴有62条染色体,生出来的骡子有63条染色体。
    驴+驴=小驴,因为驴友62条染色体,两个驴当然生出来的还是62条染色体小驴。

    二.印章类代码实例

    下面我们用代码写一下,这三个动物会繁衍什么类型的后代,因为后代类型不是驴就是骡子所以我们可以用印章类来实现。

    sealed class Son {
        //小驴继承于Son
        class 小驴() : Son()
        //小骡继承于Son
        class 小骡() : Son()
    
        fun sayHello() {
            println("儿子叫了")
        }
    }
    
    fun main(args: Array<String>) {
        var son1 = Son.小驴();
        var son2 = Son.小骡();
        var son3 = Son.小骡();
        var list = listOf<Son>(son1, son2, son3)
        for (v in list) {
            if (v is Son.小驴) {
                v.sayHello();
            }
        }
    
    }
    
    思考:

    印章类和枚举类很类似,但是sealed class 更在意的是类型,而枚举更在意的是数据。

    相关文章

      网友评论

          本文标题:Kotlin零基础学习 印章类 sealed

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