Kotlin零基础学习 印章类 sealed

2019-01-17  本文已影响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 更在意的是类型,而枚举更在意的是数据。

上一篇下一篇

猜你喜欢

热点阅读