凡事不要亲力亲为 让手下去干
class SeniorManager(val drive: Drive, val write: Write): Drive by drive, Write by write
class CarDriver: Drive{
override fun drive() {
println("司机开车呢")
}
}
class PPTWriter: Write {
override fun write() {
println("写ppt呢")
}
}
interface Drive{
fun drive()
}
interface Write{
fun write()
}
fun main(args: Array<String>) {
val carDriver = CarDriver()
val pptWriter = PPTWriter()
val seniorManager = SeniorManager(carDriver, pptWriter)
seniorManager.drive()
seniorManager.write()
}
司机开车呢
写ppt呢
继承类和接口 方法冲突: 通过super区分
abstract class A {
open fun x(): Int = 55555
}
interface I {
fun x(): Int = 6666
}
interface I2 {
//返回值不同 不可以
// fun x(): String = "hello world"
fun x(): Int = 777
}
class Test(var x: Int = 0) : A(), I, I2 {
override fun x(): Int {
println("call x() in class Test")
if (x == 1) {
return super<A>.x()
} else if (x == 2) {
return super<I>.x()
} else if (x == 3) {
return super<I2>.x()
} else {
return x
}
}
}
fun main(args: Array<String>) {
println(Test(1).x())
println(Test(2).x())
println(Test(3).x())
println(Test(520).x())
}
运行结果:
call x() in class Test
55555
call x() in class Test
6666
call x() in class Test
777
call x() in class Test
520
abstract class Player
class Upan
interface USB{
fun onMount