本文主要是介绍Kotlin_面向对象、继承、接口代理、接口方法冲突、Object(单例)、伴生对象、静态方法(成员)、方法重载、拓展方法、属性代理(by)、数据类、内部类、枚举、密封类,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
凡事不要亲力亲为 让手下去干
class SeniorManager(val drive: Drive, val write: Write): Drive by drive, Write by writeclass 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
这篇关于Kotlin_面向对象、继承、接口代理、接口方法冲突、Object(单例)、伴生对象、静态方法(成员)、方法重载、拓展方法、属性代理(by)、数据类、内部类、枚举、密封类的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!