在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 教程/ Android/ Kotlin接口
Kotlin內(nèi)聯(lián)函數(shù)
Kotlin開發(fā)環(huán)境設(shè)置(Eclipse)
Kotlin調(diào)用Java代碼
Kotlin使用Ant
Kotlin編譯器插件
Kotlin相等性
Kotlin JavaScript模塊
編寫Kotlin代碼文檔
Kotlin返回和跳轉(zhuǎn)
Kotlin異常處理
Kotlin可見性修飾符
Kotlin委托
Kotlin委托屬性
Kotlin編碼約定/編碼風(fēng)格
Kotlin基礎(chǔ)語法
使用Kotlin進行服務(wù)器端開發(fā)
Kotlin接口
Kotlin反射
Kotlin類型別名
Kotlin枚舉類
Kotlin當(dāng)前版本是多少?
Kotlin注解處理工具
Kotlin類型的檢查與轉(zhuǎn)換
Kotlin屬性和字段
Kotlin類型安全的構(gòu)建器
Kotlin相比Java語言有哪些優(yōu)點?
Kotlin JavaScript反射
Kotlin 是什么?
Kotlin泛型
Kotlin慣用語法
Kotlin與OSGi
Kotlin數(shù)據(jù)類型
Kotlin是面向?qū)ο筮€是函數(shù)式語言?
Kotlin動態(tài)類型
Kotlin協(xié)程
Kotlin操作符符重載
Kotlin使用Gradle
Kotlin密封類
Kotlin兼容性
Kotlin集合
Kotlin調(diào)用JavaScript
Kotlin null值安全
Kotlin函數(shù)
Kotlin開發(fā)環(huán)境設(shè)置(IntelliJ IDEA)
Kotlin嵌套類
Kotlin控制流程
Kotlin和Java語言比較
Kotlin 與 Java 語言兼容嗎?
Kotlin教程
Kotlin類和繼承
Kotlin對象表達式和對象聲明
JavaScript中調(diào)用Kotlin
Kotlin區(qū)間/范圍
Kotlin數(shù)據(jù)類
Kotlin lambda表達式
Kotlin是免費的嗎?
Kotlin包
使用Kotlin進行Android開發(fā)
在Java中調(diào)用Kotlin代碼
Kotlin this表達式
使用Kotlin進行JavaScript開發(fā)
Kotlin擴展
Kotlin解構(gòu)聲明
Kotlin注解
Kotlin使用Maven

Kotlin接口

Kotlin中的接口非常類似于Java 8。它們可以包含抽象方法的聲明以及方法實現(xiàn)。 使它們與抽象類不同的是接口不能存儲狀態(tài)。 它們可以具有屬性,但這些需要是抽象的或提供訪問器實現(xiàn)。

使用關(guān)鍵字:interface定義接口

interface MyInterface {
    fun bar()
    fun foo() {
      // optional body
    }
}

實現(xiàn)接口

類或?qū)ο罂梢詫崿F(xiàn)一個或多個接口:

class Child : MyInterface {
    override fun bar() {
        // body
    }
}

接口屬性

您可以在接口中聲明屬性。 在接口中聲明的屬性可以是抽象的,也可以為訪問者提供實現(xiàn)。 在接口中聲明的屬性不能具有后備字段,因此在接口中聲明的訪問器不能引用它們。

interface MyInterface {
    val prop: Int // abstract

    val propertyWithImplementation: String
        get() = "foo"

    fun foo() {
        print(prop)
    }
}

class Child : MyInterface {
    override val prop: Int = 29
}

解決重載沖突

當(dāng)在超類型列表中聲明很多類型時,可能會出現(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 {
    override fun bar() { print("bar") }
}

class D : A, B {
    override fun foo() {
        super<A>.foo()
        super<B>.foo()
    }

    override fun bar() {
        super<B>.bar()
    }
}

接口AB都聲明函數(shù)foo()bar()。它們都實現(xiàn)了foo(),但只有B實現(xiàn)bar(),bar()A中沒有標記為abstract,因為這是接口的默認值,如果函數(shù)沒有主體。 現(xiàn)在,如果類C類要實現(xiàn)A接口,顯然必須重寫bar()并提供一個實現(xiàn)。

然而,如果D類實現(xiàn)AB的方法,需要實現(xiàn)從多個接口繼承的所有方法,并指定D應(yīng)該如何實現(xiàn)它們。此規(guī)則既適用于繼承單個實現(xiàn)(bar())和多個實現(xiàn)(foo())的方法。