當前位置:
首頁 > 知識 > Kotlin 介面

Kotlin 介面

Kotlin 介面與 Java 8 類似,使用 interface 關鍵字定義介面,允許方法有默認實現:

interfaceMyInterface{funbar()// 未實現funfoo(){//已實現// 可選的方法體println("foo")}}

實現介面

一個類或者對象可以實現一個或多個介面。

classChild : MyInterface{overridefunbar(){// 方法體}}

實例

interfaceMyInterface{funbar()funfoo(){// 可選的方法體println("foo")}}classChild : MyInterface{overridefunbar(){// 方法體println("bar")}}funmain(args: Array<String>){valc = Child()c.foo(); c.bar();
}

輸出結果為:

foo
bar

介面中的屬性

介面中的屬性只能是抽象的,不允許初始化值,介面不會保存屬性值,實現介面時,必須重寫屬性:

interfaceMyInterface{varname:String//name 屬性, 抽象的}classMyImpl:MyInterface{overridevarname: String = "runoob"//重載屬性}

實例

interfaceMyInterface{varname:String//name 屬性, 抽象的funbar()funfoo(){// 可選的方法體println("foo")}}classChild : MyInterface{overridevarname: String = "runoob"//重載屬性overridefunbar(){// 方法體println("bar")}}funmain(args: Array<String>){valc = Child()c.foo(); c.bar(); println(c.name)}

輸出結果為:

foo
bar
runoob


函數重寫

實現多個介面時,可能會遇到同一方法繼承多個實現的問題。例如:

實例

interfaceA{funfoo(){print("A")}// 已實現funbar()// 未實現,沒有方法體,是抽象的}interfaceB{funfoo(){print("B")}// 已實現funbar(){print("bar")}// 已實現}classC : A{overridefunbar(){print("bar")}// 重寫}classD : A, B{overridefunfoo(){super<A>.foo()super<B>.foo()}overridefunbar(){super<B>.bar()}}funmain(args: Array<String>){vald = D()d.foo(); d.bar();}

輸出結果為:

ABbar

實例中介面 A 和 B 都定義了方法 foo() 和 bar(), 兩者都實現了 foo(), B 實現了 bar()。因為 C 是一個實現了 A 的具體類,所以必須要重寫 bar() 並實現這個抽象方法。

然而,如果我們從 A 和 B 派生 D,我們需要實現多個介面繼承的所有方法,並指明 D 應該如何實現它們。這一規則 既適用於繼承單個實現(bar())的方法也適用於繼承多個實現(foo())的方法。

Kotlin 介面

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 程序員小新人學習 的精彩文章:

SQL 的編程
MongoDB 更新文檔

TAG:程序員小新人學習 |