20.扩展(Extension)

扩展
对既有的类增加新功能而无需继承该类,即便无法获取其源代码
主要作用是为相关类整体上添加工具类方法或属性,高效优雅.
kotlin支持:扩展函数,扩展属性
扩展函数: fun 接收者类型,新扩展函数名(参数列表) {//函数实现}
//1.普通函数扩展:整数的平方
fun Int.square():Int{
       return this * this
}
//2.泛型函数扩展:取数字型数组中最大的一个元素
fun  Array.BIGGEST() : T where T : Number, T : Comparable{
       var biggest = this[0]
       for (i in 1..lastIndex){
             val element = this[i]
             if (element > biggest){
                 biggest = element
             }
       }
       return biggest
}
扩展属性
扩展属性: var 接收者类型.新扩展属性名: 类型
                  get() {}
                  set() {}
只能扩展组合属性,即只能有get 和 set 形式,不能初始化
1.普通属性扩展:整数的下一数
val Int.next : Int
      get() = this  + 1
2.泛型属性扩展: 数字类型的半径对应的面积 πr²
val  T.area : Double
       get() = 3.14159 * this.toDouble() * this.toDouble()
fun main (args: Array){
       println(10.square())
       println(arrayOf(1,2,3).biggest())
       println(3.next)
       println('Q'.toByte().area)
}
Kotlin与Swift最大的区别是什么?
Swift支持扩展协议,但Kotlin目前不支持
Kotlin中的扩展是静态的,本质上只是单纯为类添加新函数.

你可能感兴趣的:(20.扩展(Extension))