# 인터페이스 인터페이스는 구현된 메서드를 가질 수도 있으며, 프로퍼티를 가질 수도 있습니다. 인터페이스는 `interface` 를 사용해서 선언합니다. ```kotlin interface MyInterface { val prop1: Int // 추상 프로퍼티 val prop2: String // 겟터가 구현된 프로퍼티 get() = "foo" fun bar() fun foo() { // 바디를 가질 수도 있습니다. } } ``` ## 다중 상속시 충돌 문제의 해결 ```kotlin interface A { fun foo() { print("A") } fun bar() } interface B { fun foo() { print("B") } fun bar() } class C : A, B { override fun foo() { super.foo() super.foo() } override fun bar(){ print("C") } } ``` ## 함수형 인터페이스 함수형 인터페이스란, 하나의 추상 메서드만을 가진 인터페이스입니다. `fun interface`를 사용해서 선언합니다. ```kotlin fun interface KRunnable { fun invioke() } ``` 함수형 인터페이스는 람다 표현식에서 유용하게 사용됩니다. ```kotlin fun interface IntPredicate { fun accept(i: Int): Boolean } val isEven = IntPredicate {it % 2 == 0 } ```