Files
2024-06-21 15:01:25 +09:00

1.2 KiB

인터페이스

인터페이스는 구현된 메서드를 가질 수도 있으며, 프로퍼티를 가질 수도 있습니다. 인터페이스는 interface 를 사용해서 선언합니다.

interface MyInterface {
    val prop1: Int // 추상 프로퍼티
    val prop2: String // 겟터가 구현된 프로퍼티
        get() = "foo"
    fun bar()
    fun foo() {
        // 바디를 가질 수도 있습니다.
    }
}

다중 상속시 충돌 문제의 해결

interface A {
    fun foo() { print("A") }
    fun bar()
}
interface B {
    fun foo() { print("B") }
    fun bar()
}

class C : A, B {
    override fun foo() {
        super<A>.foo()
        super<B>.foo()
    }
    override fun bar(){
        print("C")
    }
}

함수형 인터페이스

함수형 인터페이스란, 하나의 추상 메서드만을 가진 인터페이스입니다. fun interface를 사용해서 선언합니다.

fun interface KRunnable {
    fun invioke()
}

함수형 인터페이스는 람다 표현식에서 유용하게 사용됩니다.

fun interface IntPredicate {
    fun accept(i: Int): Boolean
}

val isEven = IntPredicate {it % 2 == 0 }