美文网首页
Kotlin学习手册(三)接口

Kotlin学习手册(三)接口

作者: Geekholt | 来源:发表于2019-10-30 14:53 被阅读0次

如需转载请评论或简信,并注明出处,未经允许不得转载

Kotlin系列导读

Kotlin学习手册(一)类与继承
Kotlin学习手册(二)属性与字段
Kotlin学习手册(三)接口
Kotlin学习手册(四)内部类
Kotlin学习手册(五)函数
Kotlin学习手册(六)数组与集合
Kotlin学习手册(七)for循环
Kotlin学习手册(八)内联函数let、with、run、apply、also
Kotlin学习手册(九)空类型安全
Kotlin学习手册(十)带你真正理解什么是Kotlin协程

目录

接口定义

.java

public interface Fly {
    void start();
    boolean stop();
}

.kotlin

interface Fly {
    fun start()
    fun stop(): Boolean
}

接口实现

.java

public class Bird implements Fly {
    @Override
    public void start() {
        
    }

    @Override
    public boolean stop() {
        return false;
    }
}

.Kotlin

class Bird : Fly {
    override fun start() {

    }

    override fun stop(): Boolean {
        return false
    }
}

接口中的属性

你可以在接口中定义属性。在接口中声明的属性要么是抽象的,要么提供访问器的实现。在接口中声明的属性不能有field字段,因此接口中声明的访问器不能引用它们

interface Fly {
    val prop: speed // 抽象的

    val height: Int
        get() = 9999

    fun start() {
        print(speed)
    }
}

class Bird : Fly {
    override val speed: Int = 100
}

解决覆盖冲突

实现多个接口时,可能会遇到同一方法继承多个实现的问题

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

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

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

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

如果我们从 A 和 B 派生 D,我们需要实现我们从多个接口继承的所有方法,并指明 D 应该如何实现它们

相关文章

网友评论

      本文标题:Kotlin学习手册(三)接口

      本文链接:https://www.haomeiwen.com/subject/kvbovctx.html