kotlin精讲-第3章(5)枚举类&印章类

作者: 739c8d412b4c | 来源:发表于2017-12-05 09:44 被阅读202次

枚举类

枚举定义

现实生活中,说星期我们知道只有“星期一、星期二、星期三、星期四、星期五、星期六、星期日”七种情况。说扑克牌花色我们知道只有“黑桃、红心、樱花、方块”四种情况。说性别我们知道只有“男性、女性”。

“星期”只有“星期一、星期二、星期三、星期四、星期五、星期六、星期日”七种情况。我们可以通过接口加常量定义的方式来表示,比如我们可以这样有如下定义,参考代码:

public interface IWeek {

    String MON = "Mon";

    String TUE = "Tue";

    String WED = "Wed";

    String THU = "Thu";

    String FRI = "Fri";

    String SAT = "Sat";

    String SUN = "Sun";

}

Iweek的接口的特点是什么呢?就是一个类或者接口拥有有限的常量。如果一个类类或者接口拥有有限的常量,除了这样的定义方式,我们还可以选择用更为强大的枚举类。因为枚举类达到同样的限定效果之外,还提供了更多的方法和属性。

枚举类通过enum关键字完成,enum关键字添加在class关键字的前面,枚举的基本结构如下:

enum class Class{
   枚举常量1,枚举常量2,枚举常量3,枚举常量4
}

通常枚举常量使用大写字母表示。

我们定义一个枚举类Week,参考代码:

枚举类遍历&枚举常量常用属性

关于枚举类,我们需要知道。枚举是可以很方面的进行遍历的。每一个枚举常量具有name属性和ordinal属性,name表示表示枚举常量的名字,ordinal表示枚举常量的顺序,顺序从0开始。参考代码:

枚举类自定义属性

我们知道,默认每一个枚举常量就带了一个name和ordinal的属性。我们还可以通过枚举类自定义属性,让每一个枚举常量携带更多的属性。而且kotlin更为方便,直接在主构函数里面,定义你想定义的其他属性即可,参考代码:

印章类

基本定义

通过enum关键字可以定义一个枚举类,枚举类让一个类拥有了有限多个常量。通过sealed关键字,则可以定义一个印章类,印章类让一个类拥有了有限多个子类。印章类甚至可以理解为一个特殊的枚举类。印章类本身不能被实例化。

现实生活中我们知道,四则运算包括加减乘除,如果把“加减乘除”定义为常量,我们可以用枚举实现。那如果,想把“加减乘除”定义成类,则可以用印章类。

印章类的最简单结构如下:

我们把“四则运算包括加减乘除”这样的情况,定义为一个印章类,参考代码:

【代码清单-印章类1基本定义.kt】

通过例子,我们看到了怎么去定义印章类。看到了印章类包含的类可以被实例化。印章类本身不能被实例化。

分支操作

但是上面的例子,并没有任何的实际意义。想用Add、Substract、Multiply、Divide做最基本的分支操作,我们还需要做如下的更改,参考代码:

针对以上代码的第11行到14行,表示Add、Substract、Multiply、Divide继承至Operation,如果你有继承的概念,代码可以看到。如果,没有继承的概念,看完后面的继承相关的知识点,在回过来看这里。

携带自定义属性

进一步加大难度,印章类包含的有限的类还可以随意包含属性,我们把上面的逻辑进一步完善,参考代码:

枚举和印章类都是可以完成分支操作的,枚举的常量也可以携带自定义的属性,印章类包含的类也可以携带自定义属性。但是,枚举常量携带的自定义属性,是固定不变量的。印章类包含的类携带的属性,则是可以交给外接灵活赋值的。

作为了解,其实枚举类和印章类和when表达式配合起来,看着结构更清晰。when表达式我们后面再说,这里可以简单感受下。鼠标放在if关键字这里将得到如下提示,参考截图:

m

相关文章

  • kotlin精讲-第3章(5)枚举类&印章类

    枚举类 枚举定义 现实生活中,说星期我们知道只有“星期一、星期二、星期三、星期四、星期五、星期六、星期日”七种情况...

  • Kotlin学习笔记之 11 枚举类

    11.Kotlin 枚举类 枚举类初始化关键字是enum,kotlin中的枚举类初始化可以有参数,比如:enum ...

  • Day06抽象、接口、嵌套、数据类、密封、枚举

    1、抽象类2、接口类3、内部类(嵌套类)4、数据类5、密封类6、枚举类 关键字:冒号(:)在Kotlin中冒号 :...

  • 印章类

    kotlin中定义印章类通过在类 class 前面添加 sealed 实现印章类可以定义一个类可以创建出几个类型...

  • kotlin精讲-第3章(4)嵌套类&数据类

    嵌套类 我们在Kotlin内部还可以定义类,这样的类,我们可以称为嵌套类(nestedclasses)。嵌套类分成...

  • Kotlin面向对象 (6)枚举类

    枚举类构造函数枚举常用属性和函数 kotlin 中使用 enum 和 class 两个关键词声明枚举类。 枚举类使...

  • Kotlin零基础学习 印章类 sealed

    一.印章类 印章类关键字sealed 主要目的限定子类类型。 那么kotlin为什么会引入印章类概念,举一个生活中...

  • Kotlin 枚举类

    枚举类的最基本的用法是实现类型安全的枚举:枚举常量用逗号分隔,每个枚举常量都是一个对象。 初始化 每一个枚举都是枚...

  • Kotlin 枚举类

    枚举类最基本的用法是实现一个类型安全的枚举。枚举常量用逗号分隔,每个枚举常量都是一个对象。 枚举初始化 每一个枚举...

  • Kotlin 枚举类

    枚举类最基本的用法是实现一个类型安全的枚举。枚举常量用逗号分隔,每个枚举常量都是一个对象。 相关属性、方法 枚举类...

网友评论

    本文标题: kotlin精讲-第3章(5)枚举类&印章类

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