본문
170821(월) - Kotlin docs (Interfaces)
Kotlin docs
Interfaces
- java8과 유사
- method implementation 과 abstract method 선언 가능
- abstract와 다른점은 state를 store 할 수 없다는 것.
- property를 가질 수 있지만 abstract 또는 accessor을 implement 해야 한다.
interface MyInterface { fun bar() fun foo() { // optional body } }
Implementing Interfaces
class Child : MyInterface { override fun bar() { // body } }
Properties in Interfaces
- property를 interface에서 선언 가능
- abstract 이거나 accessors implement
- interface에서 선언된 property는 backing field가 없어서 accessors가 참조하지 못한다.
interface MyInterface { val prop: Int // abstract val propertyWithImplementation: String get() = "foo" fun foo() { print(prop) } } class Child : MyInterface { override val prop: Int = 29 }
Resolving overriding conflicts
- inherit 와 implementation의 같은 method 충돌
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() } }
- A와 B로부터 D를 derive 하면, 여러 interface에서 상속한 모든 메소드를 구현하고 D가 이를 구현하는 방법을 지정해야 한다.
- single 및 multiple implementation에 모두 적용된다.
'Mobile > Kotlin' 카테고리의 다른 글
170828(월) - Kotlin docs (Extensions) (0) | 2017.08.28 |
---|---|
170823(수) - Kotlin docs (Visibility Modifiers) (0) | 2017.08.23 |
170821(월) - Kotlin docs (Properties and Fields) (0) | 2017.08.21 |
170818(금) - Kotlin docs (Classes and Inheritance) (0) | 2017.08.18 |
170621(수) - Kotlin docs (Return and Jumps) (0) | 2017.06.21 |
댓글