Kotlin委托

0人阅读 评论(0) 收藏 举报
分类:

类委托

委托模式已经证明是实现继承的一个很好的替代方式,
而 Kotlin 可以零样板代码地原生支持它。
类 Derived 可以继承一个接口 Base,并将其所有共有的方法委托给一个指定的对象:

interface Base {
    fun print()
}

class BaseImpl(val x: Int) : Base {
    override fun print() { print(x) }
}

class Derived(b: Base) : Base by b

fun main(args: Array<String>) {
    val b = BaseImpl(10)
    Derived(b).print() // 输出 10
}
Kotlin

Derived 的超类型列表中的 by{: .keyword }-子句表示 b 将会在 Derived 中内部存储。

并且编译器将生成转发给 b 的所有 Base 的方法。


简单案例:

定义接口:

//洗碗的接口
 interface IWashBow{
     fun washing()
}

BigHeadSon类:

class BigHeadSon :IWashBow{
    override fun washing() {
        println("大头儿子洗完赚一块钱!")
    }
}

SmallHeadFather类:

class SmallHeadFather:IWashBow by BigHeadSon(){//通过by委托给儿子
    override fun washing() {
        println("小头爸爸洗碗赚10块钱!!")
        BigHeadSon().washing()
        println("我看着儿子洗好了!")
    }
}

测试test文件:

fun main(args: Array<String>) {
//    var son=BigHeadSon()
//    son.washing()
//
    var father=SmallHeadFather()
    father.washing()

}

运行结果:

小头爸爸洗碗赚10块钱!!
大头儿子洗完赚一块钱!
我看着儿子洗好了!



查看评论

让ActiveX控件设计状态在容器中的大小锁定!

让ActiveX控件设计状态时在容器中的大小锁定,可以使用下面这个宏,该宏为无窗口的ActiveX控件,在vc++.net(atl7.0)下编译成功.#ifndef __CONTROL_NO_WIND...
  • lu_zi
  • lu_zi
  • 2002-11-04 13:09:00
  • 836

Kotlin学习之委托机制

委托模式可以很好的替代实现继承,kotlin本身支持需要零样板代码,一个类Derived 可以继承Base并委托它所有的public 方法到一个指定的类: interface Base { ...
  • u014134488
  • u014134488
  • 2016-04-11 17:56:18
  • 4001

轻松掌握Kotlin委托机制

属性的委托属性的委托指的是一个类中的某个属性的值不是在类中直接进行定义,而是由某个类的方法来进行 setter 和 getter。默认属性委托都是线程安全的。属性委托适合那些属性的需要复杂的计算但是计...
  • zxc123e
  • zxc123e
  • 2017-06-28 11:59:01
  • 714

Kotlin-委托属性

有一些很常见的属性,虽然我们可以在每次需要它们的时候手动地实现它们,但更好的方法还是一次性全部实现,然后放进一个库里面,这些属性包含: - 懒惰属性,在它第一次被使用的时候才初始化 - 被观察的属...
  • Android_app
  • Android_app
  • 2017-07-04 09:13:33
  • 5109

Kotlin-代理属性(by)

概述所谓委托模式 ,就是为其他对象提供一种代理以控制对这个对象的访问,在Java开发过程中,是继承模式之外的很好的解决问题的方案,不熟悉委托模式的,可以参考博客 font size=4>委托模式。对于...
  • IO_Field
  • IO_Field
  • 2016-11-28 10:40:55
  • 4412

Kotlin最简单的入门教程——委托

我感觉委托还是比较重要的,所以还是要看一下,不然后面用到都不知道是什么1 类委托委托模式已经证明是实现继承的一个很好的替代方式, 而 Kotlin 可以零样板代码地原生支持它。 类 Derived 可...
  • handongyu2011
  • handongyu2011
  • 2017-06-15 10:44:04
  • 679

kotlin委托属性+SharedPreference实例

委托属性就是将一个成员变量委托给一个类管理,这个类需要实现getValue和setValue。换言之,属性将自己的get和set方法委托给了这个类的getValue和setValue。 这种模式适用...
  • zhang___yong
  • zhang___yong
  • 2017-10-26 16:32:05
  • 224

Kotlin Reference (十四) 委托类和委托属性

委托模式是软件设计模式中的一项基本技巧。在委托模式中,有两个对象参与处理同一个请求,接受请求的对象将请求委托给另一个对象来处理。 Kotlin 直接支持委托模式,更加优雅,简洁。Kotlin 通过关...
  • jjwwmlp456
  • jjwwmlp456
  • 2017-07-17 11:16:59
  • 964

Kotlin开发Android笔记11:Kotlin中属性委托

通常开发Android应用时,会自定义全局Application,当然在Kotlin中也是如此,我们也要对Application进行处理。 —-Applicaton单例化—— 下面是最...
  • true100
  • true100
  • 2016-08-15 09:54:21
  • 1970

Java代理模式和kotlin代理模式

简述: Aspect Oriented Programming 面向切片编程 aop   需求目标: 1.在某个项目中你已经写好了一部分代码,现在想要给这一部分代码添加一个新的附加的功能,并且屏蔽原来...
  • hyy495
  • hyy495
  • 2017-09-06 14:23:54
  • 323
    个人资料
    等级:
    访问量: 9190
    积分: 465
    排名: 10万+
    文章分类
    最新评论