본문

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에 모두 적용된다.

공유

댓글