
上QQ阅读APP看书,第一时间看更新
5.2 Kotlin的委托模式和委托属性
5.2.1 委托模式
Kotlin在语法层面上支持委托模式,实现起来代码显得更加简洁。下面的几行代码即可完成类的委托,实现跟上面的Java完全一样的功能。

Derived类的构造函数的参数b是一个Base对象,通过关键字by完成委托。Derived类无须再实现print()方法。
由此可见,委托模式是替代继承很好的一个选择。
再举一个例子,定义两个接口Marks和Totals,再分别定义它们的实现类StdMarks、ExcelMarks和StdTotals、ExcelTotals。
最后定义一个Student类,它和Marks、Totals建立委托的关系,Student没有使用任何继承。


执行结果如下:
printed marks calculated and printed totals --------------------------- printed marks and export to excel calculated and printed totals and export to excel