kotlin 第八站
来源:互联网 发布:数据库镜像与备份 编辑:程序博客网 时间:2024/06/06 14:05
//kotlin 扩展//kotlin 可以对一个类的属性或者方法进行扩展,且不需要继承或者使用Decorator模式//扩展是一种静态行为,对扩展的类本身不会造成影响。//扩展函数//扩展函数可以在已有的类中添加新的方法,不会对原有的类做修改,扩展函数定义形式// fun receiverType.functionName(params){// body// }// receiverType 表示函数的接收者,也就是函数扩展的对象// functionName 函数扩展的名称// 扩展函数的参数,可以为NULLclass User(name:String){ var name:String? = null init { this.name = name }}fun User.println(){ println("用户名:$name")}fun MutableList<Int>.swap(index:Int,index2:Int){ val tem = this[index] this[index] = this[index2] this[index2] = tem}//扩展空对象//在扩展函数时,可以通过this来判断接收者是否为null,这样,即使接收者为null,也可以调用扩展函数fun Any?.toString():String{ if(this == null) return "NULL" return toString()}//扩展属性 除了函数,kotlin也支持属性对属性的扩展val <T> List<T>.lastIndex:Int get() = size-1fun main(args:Array<String>){ println("hello world") var test = User("jack") test.println() val l = mutableListOf(1,2,3) l.swap(0,2) println(l) var lala = null println(lala.toString()) println(l.lastIndex)}
//kotlin数据类与密封类//kotlin可以创建一个只包含数据的类,关键字为data//编译器会自动从主构造函数中根据所有的属性提取一下函数://equals()/hashCode()toString() componenN() functions对应属性按声明顺序排列 copy()函数//如果这些函数在类中已经定义或者在超类中继承而来,就不再生成//为类保证生成代码的一致性以及意义,数据类需要满足一下条件//1.主构造函数必须有一个参数//2.所有的主构造函数的参数必须标示为var或者val//3.数据类不能声明为abstract inner open 或者sealed//4.数据类不能继承其他类(但是可以实现接口)data class User2(var name:String,var age:Int)fun main(args:Array<String>){ var jack = User2("jack",12) var jack2 = jack.copy(age=123) println(jack) println(jack2) //数据类解构声明 var(name,age) = jack println("name is $name,age is $age")}//密封类用来表示受限的类的继承结构:当一个值为有限几种的类型,而不能有任何其他类型时。//在某种意义上,他们是枚举类的扩展:枚举类型的值集合也是受限的,但每个枚举常量只存在一个实例,而密封类的一个子类//可以有可包含状态的多个实例。//声明一个密封类,使用sealed关键字修饰类,密封类可以有子类,但所有的子类要内嵌在密封类中//sealed 不能修饰interface abstract class
阅读全文
0 0
- kotlin 第八站
- Kotlin 第八章:接口
- 《Kotlin 程序设计》第八章 Kotlin 集成Spring Boot开发
- Kotlin 从学习到 Android 第八章 接口
- Kotlin 第一站
- Kotlin 第二站
- kotlin 第三站
- kotlin 第四站
- kotlin 第五站
- Kotlin 第六站
- kotlin 第七站
- Kotlin
- Kotlin
- Kotlin
- Kotlin
- kotlin
- kotlin
- Kotlin
- Expression Expand
- git+jenkins配置
- HDFS_视图文件系统
- 【NOIP2017普及组正式赛】 图书管理员
- Android 简单各种机制集合(面)(待补充)
- kotlin 第八站
- 生活小记40
- NFC相关学习------第一篇
- CAD流程图
- Ehcache 2 介绍
- 【OpenCV】视频/图像背景减除方法
- 欢迎使用CSDN-markdown编辑器
- C++程序设计笔记
- Spark实现 集体智慧编程 第二章电影推荐