如需轉(zhuǎn)載請評論或簡信日川,并注明出處,未經(jīng)允許不得轉(zhuǎn)載
Kotlin系列導(dǎo)讀
Kotlin學(xué)習(xí)手冊(一)類與繼承
Kotlin學(xué)習(xí)手冊(二)屬性與字段
Kotlin學(xué)習(xí)手冊(三)接口
Kotlin學(xué)習(xí)手冊(四)內(nèi)部類
Kotlin學(xué)習(xí)手冊(五)函數(shù)
Kotlin學(xué)習(xí)手冊(六)數(shù)組與集合
Kotlin學(xué)習(xí)手冊(七)for循環(huán)
Kotlin學(xué)習(xí)手冊(八)內(nèi)聯(lián)函數(shù)let回论、with傀蓉、run、apply葬燎、also
Kotlin學(xué)習(xí)手冊(九)空類型安全
Kotlin學(xué)習(xí)手冊(十)帶你真正理解什么是Kotlin協(xié)程
目錄
接口定義
.java
public interface Fly {
void start();
boolean stop();
}
.kotlin
interface Fly {
fun start()
fun stop(): Boolean
}
接口實現(xiàn)
.java
public class Bird implements Fly {
@Override
public void start() {
}
@Override
public boolean stop() {
return false;
}
}
.Kotlin
class Bird : Fly {
override fun start() {
}
override fun stop(): Boolean {
return false
}
}
接口中的屬性
你可以在接口中定義屬性谱净。在接口中聲明的屬性要么是抽象的,要么提供訪問器的實現(xiàn)冈钦。在接口中聲明的屬性不能有field
字段李请,因此接口中聲明的訪問器不能引用它們
interface Fly {
val prop: speed // 抽象的
val height: Int
get() = 9999
fun start() {
print(speed)
}
}
class Bird : Fly {
override val speed: Int = 100
}
解決覆蓋沖突
實現(xiàn)多個接口時,可能會遇到同一方法繼承多個實現(xiàn)的問題
interface A {
fun foo() { print("A") }
fun bar()
}
interface B {
fun foo() { print("B") }
fun bar() { print("bar") }
}
class C : A, B {
override fun foo() {
super<A>.foo()
super<B>.foo()
}
override fun bar() {
super<B>.bar()
}
}
如果我們從 A 和 B 派生 D驾窟,我們需要實現(xiàn)我們從多個接口繼承的所有方法认轨,并指明 D 應(yīng)該如何實現(xiàn)它們