我的Kotlin 学习之路(二)Kotlin之扩展

为什么从关键字一下就跳到扩展了?我们知道JAVA中没有扩展的概念,Kotlin中引入了扩展,如果我能预测成功的话,这将成为对JAVA最大的挑战。。。

1、什么叫扩展extension?

      扩展其实就是自定义原始类的方法和属性

2、为什么要扩展?

      当原始类中现有的方法或属性已不能满足开发需要或者开发者需要更便利、更灵活的方法及属性时使用

3、扩展的种类?

      扩展分为扩展方法和扩展属性

4、扩展的实现及调用?

      扩展实际上相当于原始类的静态方法,调用简单


下面codeing

先定义一个C类,一个成员方法,一个属性

class C(var size:Int = 0){ 

         fun foo (){ 

           println("成员方法")

         }

}


//C类扩展方法 

//C类本没有f()这个方法,f()是开发者自定义的,是属于C类的静态方法,如果这个方法也叫foo(),则调用成员方法

fun C.f(){

      println("扩展方法")

}


//C类扩展属性 lastIndex  

//C类没有lastIndex的属性,但是有size的属性,扩展属性必须要重写get() !

val C.lastIndex:Int 

get() = size - 1



fun main(args: Array) {

      C(10).foo() //打印 “成员方法”

      C().f() //打印 “扩展方法”

      println("C.lastIndex = ${C(10).lastIndex}") //打印 9

}


5、扩展类声明位置?

扩展方法和扩展属性可以声明在顶层,而不是一个类里,比如新建 Extensions.kt类

/**

* 扩展类

* Created by ff on 2017/6/2.

*/

//Context 类的扩展 toast方法,可以用在任何Activity及Service中

fun Context.toast(str:String,duration:Int = Toast.LENGTH_SHORT){

        Toast.makeText(this,str,duration).show()

}


写到这,对扩展应该明白多了吧,以上就是扩展的简单解析和实现。希望能共同进步!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,886评论 18 139
  • 《Kotin 编程思想·实战》 《Kotlin极简教程》正式上架: 点击这里 > 去京东商城购买阅读 点击这里 >...
    光剑书架上的书阅读 2,118评论 1 4
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,759评论 18 399
  • 爱你,高三 转眼间,我们高三了 我们一同入校 走过了漫长而又短暂的两年 刚入...
    徙南斑马阅读 457评论 4 7
  • 女友在旁边用唱吧唱歌。。。呵呵呵呵呵。不要问我为什么呵呵 我这边在听课。围棋的课程,聂卫平围棋道场的课程。这日记是...
    蓝天的小屋阅读 205评论 0 1