Kotlin学习笔记--枚举和Sealed Class(密封、印章类型)
2017-11-13 17:20
936 查看
子类类型有限的class
印章类和枚举的区别:
sealed class 更在意类型
枚举更在意数据
枚举:
使用:
sealed class
学生分2种,好学生和坏学生。但是只要是学生,都会有学习这个行为
创建并调用方法:
打印日志:
可是,好学生和坏学生,学习的方法和状态那些都不一样,修改Student下的代码如下
调用:
日志如下:
印章类和枚举的区别:
sealed class 更在意类型
枚举更在意数据
枚举:
enum class Week { 星期一,星期二,星期三,星期四,星期五,星期六,星期日 }
使用:
println(Week.星期一)
sealed class
学生分2种,好学生和坏学生。但是只要是学生,都会有学习这个行为
/** * 印章类 * * 学生类 * * 好学生、差学生 */ sealed class Student { fun study() { println("study") } //学生类型下的好学生类型 class goodStudent() : Student() //学生类型下的坏学生类型 class badStudent() : Student() }
创建并调用方法:
/* *直接写下面这句,会报错: *Cannot access '<init>': it is private in 'Student' *Sealed types cannot be instantiated */ //var s = Student() var s1=Student.goodStudent() s1.study() var s2=Student.badStudent() s2.study()
打印日志:
I/System.out: study I/System.out: study
可是,好学生和坏学生,学习的方法和状态那些都不一样,修改Student下的代码如下
/** * 印章类 * * 学生类 * * 好学生、差学生 */ sealed class Student { open fun study() { println("study") } //学生类型下的好学生类型 class goodStudent() : Student() { override fun study() { println("goodStudent,study") } fun goodStudy(){ println("goodStudy") } } //学生类型下的坏学生类型 class badStudent() : Student() { override fun study() { println("badStudent,study") } fun badStudy(){ println("badStudy") } } }
调用:
/* *直接写下面这句,会报错: *Cannot access '<init>': it is private in 'Student' *Sealed types cannot be instantiated */ //var s = Student() var s1=Student.goodStudent() s1.study() s1.goodStudy() var s2=Student.badStudent() s2.study() s2.badStudy()
日志如下:
I/System.out: goodStudent,study I/System.out: goodStudy I/System.out: badStudent,study I/System.out: badStudy
相关文章推荐
- (原创)c#学习笔记05--变量的更多内容02--复杂的类型变量01--枚举
- C++学习笔记之七 复合类型---枚举
- C++ 学习笔记(19)new/delete表达式、定位new、typeid、dynamic_cast、type_info、枚举类型、成员函数指针、union、位域、volatile限定符、链接指示
- Kotlin 学习笔记(四)—— Kotlin基础之基本类型
- 学习笔记---枚举类型、联合体、自定义类型
- Kotlin的密封(Sealed)类:超强的枚举(KAD 28)
- C#基础学习笔记--数据类型,值类型,结构类型,枚举类型
- C# step by step 学习笔记8 CHAPTER 9 使用枚举和结构创建值类型
- Kotlin学习笔记5-4 其他-类型检查与转换
- Kotlin-14.密封类(sealed class)
- 黑马程序员----C 语言学习笔记之枚举类型和typedef关键字
- <C#入门经典>学习笔记3之类型转换与枚举
- JPA学习笔记---JPA实体Bean的建立---链接上一个博文:对实体Bean中属性进行操作:保存日期类型,设置字段的长度,名字,是否为空,可以声明枚举字段;可以存放二进制数据,可以存放
- C# 2010 从入门到精通 学习笔记8 第9章 使用枚举和结构来创建值类型
- Kotlin学习笔记一基本类型
- 【js学习笔记-053】js中的面向对象技术------枚举类型
- Java学习笔记21 枚举类型enum、Enu…
- Kotlin 学习笔记(一) 基本类型和基本语法
- 学习kotlin 记录笔记。----数据类型
- C语言学习笔记:23_枚举类型