kotlin 之美(平滑过渡)

作者 : 开心源码 本文共965个字,预计阅读时间需要3分钟 发布时间: 2022-05-12 共213人阅读

kotlin.jpeg

kotlin 和 java 的关系感觉就像 typescript 和 javascript 的关系。Kotlin 做法并不是革命式推翻项目中原有的老大地位,而是可以和老大融洽共处,让老大发现他好从而自身改变。
kotlin 扩展函数非常简单,只需把扩展类放置在函数名前面就搞定。

    var title:String = "angular"    fun String.titlelastChar():Char = this.get(this.length - 1)    println(title.titlelastChar())

这里String函数接受者,this代表接受类型实例对象,看起来有点像 go 语言 structinterface的实现。

扩展函数并不允许打破类封闭性,扩展函数中是无法访问到类私有或者者受保护的成员。
扩展函数在 java 中也是可调用的使用的。

    public static void main(String[] args) {        char c = StringUtilKt.titlelastChar("angluar");        System.out.println(c);    }
open class View{    open fun click() = println("clicked on view")}open class Button:View(){    override fun click() = println("clicked on button")}
    val view:View = View()    val btn:View = Button()    view.click()    btn.click()

在 OOP 的语言中子类重现父类方法是一件极为平时事。即使向上转型也会调用子类的方法。

clicked on viewclicked on button

但是扩展函数并不是类的一部分,我们做一个试验让基类ViewButton都扩展了showOff方法。

    fun View.showOff() = println("call showOff of view")    fun Button.showOff() = println("call showOff of button")     val btn:View = Button()    btn.showOff()
call showOff of view

发现 button 向上转型调用时 View 的 showOff 方法而非自己本身的 showOff 方法。

说明
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » kotlin 之美(平滑过渡)

发表回复