- 扩展函数
(据我所知,kotlin扩展函数不是存放在被扩展的类里面的,它的实现机制是使用装饰器模式实现的)- is 和 as
在kt文件中使用 fun 类名.扩展函数名 , 就可以实现对想要扩展的类添加扩展函数来消除每次调用这个函数都要实现所有代码的重复操作
使用时只需要调用 类名.扩展函数名 如果扩展函数是有参数的就传入参数,这样就可以使用这个扩展函数
注意:扩展函数不可重写 - 中缀调用
想要允许使用重罪符号调用函数,需要使用(infix)修饰符来标记它传值的 to,
在循环中使用到的 in ,
比较两个对象中的内容是否相等的 sameAs,
利用中缀调用判断元素是否在集合中的 into.
如:
val (number , name) = 1 to "one"
并不是所有的函数都能写成中缀调用,中缀调用首先必须满足一个条件就是 函数的参数只有一个。然后再看这个函数的参与者是不是只有两个元素,这两 个元素可以是两个数,可以是两个对象,可以是集合等。
- is 和 as
3. 类默认修饰final
final不可继承 ,需要给每一个可以被重写的属性或方法添加open修饰符。override 前添加 final ,因为没有final的override意味着是open的
4. 抽象类
抽象类默认为open的,抽象类内部的方法必须添加abstract或者open否则默认为final。
5. 接口中的成员始终是open的不能添加abstract ,open ,final
6. 普通class默认为public
7. 新修饰符
internal(内部的):在模块内可见
protected : 只能访问当前类和其子类
public : 是kotlin的默认对象属性
8.
java kotlin
嵌套类 :static class class
内部类 :class inner class
kotlin 嵌套类的内部不持有外部类的引用 , 内部类想要持有外部类的引用需要添加innter关键字,外部类不能使用内部类以及嵌套类中的private类型方法。
如何获取外部类的引用:
如:
class Outer{
innter class Innter {
fun getOuterReference(): Outer = this@Outer
}
}
is: 显式类型转换,智能转换,可以用于判断两个对象的类型是否相同,类似于Java的instanceof
as: 强制类型转
- in 用于检查一个值是否在区间 或者 !n 检查一个值是否不在区间换
网友评论