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

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

Kotlin接口

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

使用關鍵字:interface定義接口

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

實現(xiàn)接口

類或對象可以實現(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
}

解決重載沖突

當在超類型列表中聲明很多類型時,可能會出現(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應該如何實現(xiàn)它們。此規(guī)則既適用于繼承單個實現(xiàn)(bar())和多個實現(xiàn)(foo())的方法。