kotlin類和對象—>接口
1.接口定義,使用關鍵字interface 來定義接口
interface MyInterface { fun bar() fun foo() { // 可選的方法體 } }
2.實現接口,一個類和對象可以實現一個或多個接口
class Child : MyInterface { override fun bar() { // 方法體 } }
3.接口中的屬性,在接口中聲明的屬性要么是抽象的,要么提供訪問器的實現。在接口中聲明 的屬性不能有幕后字段(backing field),因此接口中聲明的訪問器不能引用它們。
interface MyInterface { val prop: Int // 抽象的 val propertyWithImplementation: String get() = "foo" fun foo() { print(prop) } } class Child : MyInterface { override val prop: Int = 29 }
4.接口繼承,一個接口可以從其他接口派生,從而既提供基類型成員的實現也聲明新的函數與屬性。很自然地,實現 這樣接口的類只需定義所缺少的實現
interface Named { val name: String } interface Person : Named { val firstName: String val lastName: String override val name: String get() = "$firstName $lastName" } data class Employee( // 不必實現“name” override val firstName: String, override val lastName: String, val position: Position ) : Person
5.覆蓋沖突問題,實現多個接口時,可能會遇到同一方法繼承多個實現的問題
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() } }

浙公網安備 33010602011771號