本文主要是介绍14:kotlin类和对象 -- 接口(Interfaces),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
接口可以包含抽象方法和普通方法。与抽象类的不同之处在于接口不能存储状态。它们可以拥有属性,但这些属性需要是抽象的或定义访问器
使用关键字interface
来定义接口
interface MyInterface {fun bar() // 抽象方法fun foo() { // 普通方法// 方法实现}
}
实现接口
一个类或者对象可以实现多个接口
class Child : MyInterface {override fun bar() {// 方法实现}
}
接口属性
抽象属性或者带有访问器的属性
interface MyInterface {val prop: Int // 抽象val propertyWithImplementation: String // 带访问器get() = "foo"fun foo() {print(prop)}
}class Child : MyInterface {override val prop: Int = 29
}
继承接口
interface Named {val name: Stringval age : Int
}interface Person : Named { // 继承Namedval firstName: Stringval lastName: Stringoverride val name: String get() = "$firstName $lastName" // 重写name属性
}data class Employee(override val firstName: String, // 重写firstName属性override val lastName: String, // 重写lastName属性override val age: Int // 重写age属性
) : Person // 实现Person
重写冲突
当多个父类有相同名称和参数的方法时
interface A {fun foo() { print("A") }fun bar()
}interface B {fun foo() { print("B") }fun bar() { print("bar") }
}class C : A {override fun bar() { print("bar") }
}class D : A, B {override fun foo() {super<A>.foo()super<B>.foo()}override fun bar() {super<B>.bar()}
}
对于类D
必须要重写foo()
和bar
方法,否则在使用时不知道到底要调用A
还是B
的方法
这篇关于14:kotlin类和对象 -- 接口(Interfaces)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!