kotlin 학습 노트 IV—— 인터페이스

2055 단어 kotlin

상호 작용



Java 8과 유사한 kotlin 인터페이스는 interface 키워드를 사용하여 인터페이스를 정의하여 메소드가 기본 구현을 가질 수 있도록 합니다.

interface MyInterface {
    fun bar()    // not implemented
    fun foo() {  //implemented
      // Optional method body
      println("foo")
    }
}

구현 인터페이스



클래스 또는 개체는 하나 이상의 인터페이스를 구현할 수 있습니다.
예시:

interface MyInterface {
    fun bar()
    fun foo() {
        // optional function
        println("foo")
    }
}
class Child : MyInterface {
    override fun bar() {
        println("bar")
    }
}

인터페이스의 속성



인터페이스의 속성은 추상화만 가능하며 초기화 값은 허용되지 않습니다. 인터페이스는 속성 값을 저장하지 않습니다. 인터페이스를 구현할 때 속성을 다시 작성해야 합니다.
(接口中的属性只能是抽象的,不允许初始化值,接口不会保存属性值,实现接口时,必须重写属性)
예시:

interface MyInterface {
    var name:String //name , abstract
    fun bar()
    fun foo() {
        // 可选的方法体
        println("foo")
    }
}
class Child : MyInterface {
    override var name: String = "runoob" //override name
    override fun bar() {
        println("bar")
    }
}

오버라이드 기능



여러 인터페이스를 구현할 때 동일한 메서드가 여러 구현을 상속하는 문제가 발생할 수 있습니다. 예를 들어:

interface A {
    fun foo() { print("A") }   // implemented
    fun bar()                  // abstract, not implemented
}

interface B {
    fun foo() { print("B") }   // implemented
    fun bar() { print("bar") } // implemented
}

class C : A {
    override fun bar() { print("bar") }   // override
}

class D : A, B {
    override fun foo() {
        super<A>.foo()
        super<B>.foo()
    }

    override fun bar() {
        super<B>.bar()
    }
}

fun main(args: Array<String>) {
    val d =  D()
    d.foo();
    d.bar();
}

산출:

ABbar

좋은 웹페이지 즐겨찾기