Kotlin的扩展函数/属性

本文作者: 杨晓辉

本文链接: http://youngxhui.github.io/2017/08/12/Kotlin-扩展函数-属性/

版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 3.0 许可协议。

转载请注明出处!http://youngxhui.github.io/2017/08/12/Kotlin-%E6%89%A9%E5%B1%95%E5%87%BD%E6%95%B0-%E5%B1%9E%E6%80%A7/#hcq=ft0uhyq

前言

扩展函数和扩展属性在 Java 里面是没有的,这样的话很好的弥补了 Java 的缺陷。所谓扩展方法或者属性是指在原来没有的方法或者属性上进行扩展,不会改变原来的属性和方法。

扩展函数

声明扩展函数的方法是先写上要扩展的类名,之后在写扩展方法。

对 Book 这个类进行扩展,这个类只有一个方法,在我们不修改 Book 类的前提下对其进行扩展。

class Book(val name: String, var price: Int) {
    val ISBN: Int = 123456789
    fun add() {
        println("Add a book,name is $name,price is $price,ISBN is $ISBN")
    }
}
fun Book.show() = add()

这样我们便完成了对 Book 类进行扩展。

在扩展函数中,可以使用原有类的方法,变量。

fun main(args: Array<String>) {
    val book = Book("红楼梦", 50)
    book.show()
}

扩展是静态解析的
扩展不能真正的修改他们所扩展的类。通过定义一个扩展,你并没有在一个类中插入新成员, 仅仅是可以通过该类型的变量用点表达式去调用这个新函数。

扩展属性

扩展属性不能初始化器,所以只能是使用显示 get/set 方法进行定义。

任就采用上面的例子。给 Book 添加一个 profit 属性。

像这个样子,我们就定义了这个类的扩展属性

val Book.profit: Int
    get() = price - 20
fun main(args: Array<String>) {
    val book = Book("红楼梦", 50)
    book.show()
    println("book's profit is ${book.profit}")
}

更多关于扩展函数/方法的例子可以参考官方网站

kotlin官方文档(中文)

kotlin官方文档(英文)

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

推荐阅读更多精彩内容

  • @synthesize和@dynamic分别有什么作用?@property有两个对应的词,一个是 @synthes...
    笔笔请求阅读 533评论 0 1
  • 前言 人生苦多,快来 Kotlin ,快速学习Kotlin! 什么是Kotlin? Kotlin 是种静态类型编程...
    任半生嚣狂阅读 26,289评论 9 118
  • Google在今年的IO大会上宣布,将Android开发的官方语言更换为Kotlin,作为跟着Google玩儿An...
    蓝灰_q阅读 77,007评论 31 489
  • ¥关闭¥ 【雷霆战机】 〖http://pan.baidu.com/s/1kVstszX〗 《解压源码后直接用AI...
    小菜c阅读 9,618评论 0 19
  • 那一年一首认真的雪让我认识了你 青涩而懵懂的你 后来你杳无音讯 我甚至以为你已退出娱乐圈 直到15年演员这首歌让我...
    潮流季阅读 345评论 0 0