kotlin接口

kotlin中的接口与Java8中的类似,既包含方法也包含属性。方法包括抽象方法和普通方法,属性包含抽象属性和普通提供访问器的属性。

interface TestInterface {
    val prop: Int   //抽象属性,必须被实现的类重写覆盖
    val name: String      //普通属性,必须提供访问器get,属性也可以被实现类覆盖
        get() = "tian"

    fun test()      //抽象方法,没有方法体,必须被实现类重写覆盖

    fun test1(){   //普通方法,包含方法体,实现类可以不重写,但实现类可以重写覆盖
        println("test1")
    }
}

//实现类
class Tian : TestInterface {
    override val prop: Int      //重写覆盖抽象属性
        get() = 1
    override val name: String = "nihoa" //重写覆盖普通属性

    override fun test() { //重写覆盖
        println("test")
    }  
}

解决冲突

一个类实现多个接口,可能出现类中一个方法是多个接口中相同函数名方法的实现,例如

interface A {
    fun foo() { println("A foo") }
    fun bar()
}
interface B {
    fun foo() { println("B foo") }
    fun bar() { println("B bar")}
}
class C: A{
    override fun bar() { println("C bar")}
}
class D: A, B {
    override fun foo() {
        super.foo()
        super.foo()
    }

    override fun bar() {
        super.bar()
    }
}

上述C类实现了A,必须实现A接口的bar方法。 D类实现了两个接口A、B, 重写覆盖foo函数,以super<超类名>进行了超类方法的调用,bar方法也必须实现,因为在A中Bar方法为抽象的,也可以使用super<超类名>进行了超类方法的调用

你可能感兴趣的:(kotlin接口)