Kotlin 接口(Interface)
在 Kotlin 中,接口(Interface)是一个定义了一组行为(方法)的抽象类型,可以被类实现。Kotlin 的接口与 Java 中类似,但也有一些显著的区别和特性,比如可以包含默认实现。
Kotlin 接口的特点
方法声明与默认实现:
- 接口可以定义抽象方法,类实现接口时必须提供这些方法的实现。
- 接口也可以包含方法的默认实现,这意味着类在实现接口时可以选择使用默认实现或提供自定义实现。
属性声明:
- 接口可以包含属性声明,并且可以为属性提供 getter 和 setter 的默认实现。
- 由于接口中的属性没有后备字段,getter 必须在接口内实现。
没有构造函数:
- 接口不能有构造函数。
定义一个接口
interface MyInterface {
// 抽象方法
fun abstractMethod()
// 带有默认实现的方法
fun defaultMethod() {
println("This is the default implementation.")
}
// 属性
val property: String
}
实现接口的类
class MyClass : MyInterface {
// 必须实现的抽象方法
override fun abstractMethod() {
println("Implementing the abstract method.")
}
// 属性实现
override val property: String = "Property Implementation"
}
fun main() {
val myClassInstance = MyClass()
myClassInstance.abstractMethod() // 输出: Implementing the abstract method.
myClassInstance.defaultMethod() // 输出: This is the default implementation.
println(myClassInstance.property) // 输出: Property Implementation
}
多接口实现
Kotlin 允许一个类实现多个接口,如果这些接口有相同的方法名或属性名,类必须明确地实现这些方法或属性,消除歧义。
interface InterfaceA {
fun commonMethod() {
println("InterfaceA implementation")
}
}
interface InterfaceB {
fun commonMethod() {
println("InterfaceB implementation")
}
}
class MultipleInterfaces : InterfaceA, InterfaceB {
override fun commonMethod() {
// 可以选择调用接口中的某一个实现
super<InterfaceA>.commonMethod()
// super<InterfaceB>.commonMethod()
}
}
fun main() {
val obj = MultipleInterfaces()
obj.commonMethod() // 输出: InterfaceA implementation
}
Kotlin 的接口允许实现默认行为,这种特性很灵活,可以重用代码并保持接口的抽象性。