인터페이스

  • Java8과 유사. 추상 메소드와 메소드 구현을 가질 수 있다

인터페이스 구현

클래스 혹은 오브젝트는 1개 이상의 인터페이스를 가질 수 있다

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

인터페이스의 프로퍼티

  • 인터페이스에서 프로퍼티 선언 가능
  • 추상형이지만 Accessor 구현 가능
  • Backing Field 를 가질 수 없다. 인터페이스에서 선언한 Accessor는 그것을 참조할 수 없음
interface MyInterface {
    val prop: Int // abstract

    val propertyWithImplementation: String
        get() = "foo"

    fun foo() {
        print(prop)
    }
}

class Child : MyInterface {
    override val prop: Int = 29
}

오버라이딩 충돌 해결

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

명시적으로 오버라이딩 대상을 정의해서 호

results matching ""

    No results matching ""