fun main(arg: Array<String>) { val baseImpl = baseImpl(2) demo(baseImpl).printL() } interface base{ fun printL() } class baseImpl(val x:Int):base{ override fun printL() { print(x) } } class demo(b:base) :base by b{//by关键字将base类的printL函数委托给了一个对象 fun getName():String{//自己的方法 return "name" } }
可以看出:demo类使用by关键字将base类的printL函数委托给了一个对象.该对象需要通过demo类的主构造器传入,而且该对象类必须实现base接口!