99re热视频这里只精品,久久久天堂国产精品女人,国产av一区二区三区,久久久精品成人免费看片,99久久精品免费看国产一区二区三区

Kotlin 接口

2022-02-18 11:00 更新

Kotlin 接口與 Java 8 類似,使用 interface 關(guān)鍵字定義接口,允許方法有默認(rèn)實現(xiàn):

interface MyInterface {
    fun bar() // 未實現(xiàn)
    fun foo() { //已實現(xiàn) // 可選的方法體 
        println("foo")
    }
}

實現(xiàn)接口

一個類或者對象可以實現(xiàn)一個或多個接口。

class Child : MyInterface { override fun bar() { // 方法體 } }

實例

interface MyInterface {

    fun bar() fun foo() { // 可選的方法體  println("foo")  }  }  class Child :  MyInterface {  override fun bar() { // 方法體  println("bar")  }  }  fun main(args: Array<String>) {  val c = Child()        c.foo();       c.bar();  }

        

輸出結(jié)果為:

foo
bar

接口中的屬性

接口中的屬性只能是抽象的,不允許初始化值,接口不會保存屬性值,實現(xiàn)接口時,必須重寫屬性:

interface MyInterface {
    var name: String //name 屬性, 抽象的
 } 
class MyImpl:
MyInterface{ 
override var name: String = "w3cschool" //重寫屬性
 }
    

實例

interface MyInterface {
    var name: String //name 屬性, 抽象的 
    fun bar() 
    fun foo() { // 可選的方法體 
        println("foo")
    }
}
class Child: MyInterface {
    override var name: String = "w3cschool" //重寫屬性
    override fun bar() { // 方法體 
        println("bar")
    }
}
fun main(args: Array < String > ) {
    val c = Child()
    c.foo();
    c.bar();
    println(c.name)
}

輸出結(jié)果為:

foo
bar
w3cschool

函數(shù)重寫

實現(xiàn)多個接口時,可能會遇到同一方法繼承多個實現(xiàn)的問題。例如:

實例

interface A {
    fun foo() {
        print("A")
    } // 已實現(xiàn)
    fun bar() // 未實現(xiàn),沒有方法體,是抽象的
}
interface B {
    fun foo() { print("B")} // 已實現(xiàn) 
    fun bar() { print("bar") } // 已實現(xiàn)
}
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()
    }
}
fun main(args: Array < String > ) {
    val d = D() 
    d.foo();
    d.bar();
}

輸出結(jié)果為:

ABbar

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

然而,如果我們從 A 和 B 派生 D,我們需要實現(xiàn)多個接口繼承的所有方法,并指明 D 應(yīng)該如何實現(xiàn)它們。這一規(guī)則 既適用于繼承單個實現(xiàn)(bar())的方法也適用于繼承多個實現(xiàn)(foo())的方法。


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號