其实主要是思想就是,定义一个接口,比如Person,里面有一个抽象方法walk()。然后有一个类比如Man实现了这个接口,但是不想重写想写抽象方法walk,所以就让另一个类,比如Father来重写这个抽象方法,而Father也要实现这个接口。下面是示例代码。
- 定义一个接口Person
interface Person {
fun walk()
}
- 定义一个类Father,并且实现Person接口
class Father : Person {
override fun walk() {
println("父亲散步")
}
}
- 定义一个类Man,并且实现Person接口,但是Man不想重写walk,但是使用Man也想调用walk方法,就通过Father来调用Walk方法,通过by关键字实现
class Man(name: String) : Person by Father() {
var mName: String = name
}
- 调用代码,这样man也能调用walk方法,但是执行结果是 父亲散步
fun main(array: Array<String>) {
var man: Man = Man("张三")
man.walk()
}