Bùi Hải Nam Help

Kotlin interface

Trong Kotlin interface khá giống so với Java 8. Nó có thể chứa các function ảo (abstract function) cũng như các implement function (các function có body) và đồng thời cũng có thể chứa các property. Điều khác biệt giữa abstract classinterfaceinterface không có state trong khi abstract class thì có. Ta sử dụng từ khóa interface để định nghĩa một interface:

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

Kế thừa interface:

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

Property trong interface

Bạn có thể khởi tạo các property ở trong interface.

interface MyInterface { val prop: Int // abstract val post: String get() = "Any post" val propertyWithImplementation: String get() = "foo" fun foo() { print(prop) } } class Child : MyInterface { override val prop: Int = 29 }

Lưu ý là chúng ta không được khởi tạo cho property trong interface, và interface không có backing fields

Overriding conflict

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() } }

Vấn đề xảy ra khi cả interface AB đèu có function foo()bar(), chi tiết tại đây

Last modified: 16 February 2024