资讯专栏INFORMATION COLUMN

Kotlin 接口

cocopeak / 1370人阅读

摘要:中的接口与类似,但是它允许有默认实现。这一点与有些相近,及以后,允许我们在接口中定义方法和方法。这与继承中有多个相同方法的处理一样。欢迎加入学习交流群,大家一起学习交流。

Kotlin 中的接口与Java类似,但是它允许有默认实现。这一点与Java 8有些相近,JDK8及以后,允许我们在接口中定义static方法和default方法。

interface MyInterface {
    fun method1();
    
    fun result():Int
    
    fun doIt(){
        print("do it")
    }
}

接口的实现

一个类或者对象可以实现一个或多个接口。

class DefaultImpl :MyInterface{
        override fun result(): Int {
            return 0;
        }

        override fun method1() {
           print("override method 1")
        }

}

接口中的属性

接口中的属性只能是抽象的,不允许初始化值
接口不会保存属性值,实现接口时,必须重写属性

interface MyInterface{
    var name:String //name 属性, 抽象的
}
 
class MyImpl:MyInterface{
    override var name: String = "runoob" //重载属性
}

Demo

interface MyInterface {
    var name:String //name 属性, 抽象的
    fun bar()
    fun foo() {
        // 可选的方法体
        println("foo")
    }
}
class Child : MyInterface {
    override var name: String = "runoob" //重写属性
    override fun bar() {
        // 方法体
        println("bar")
    }
}
fun main(args: Array) {
    val c =  Child()
    c.foo();
    c.bar();
    println(c.name)
 
}

输出结果为:

foo
bar
runoob

函数重写

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

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.foo()
        super.foo()
    }
 
    override fun bar() {
        super.bar()
    }
}
 
fun main(args: Array) {
    val d =  D()
    d.foo();
    d.bar();
}

输出结果为:

ABbar

C 只实现了,只需要重写抽象方法bar().而class D则实现了A,B,而A,B都有方法
foo(),bar(),所以都需要重写,用以指定D如何实现。这与继承中有多个相同方法的处理一样。

欢迎加入学习交流群569772982,大家一起学习交流。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/70567.html

相关文章

  • Kotlin + Spring Boot : 下一代 Java 服务端开发 》

    摘要:下一代服务端开发下一代服务端开发第部门快速开始第章快速开始环境准备,,快速上手实现一个第章企业级服务开发从到语言的缺点发展历程的缺点为什么是产生的背景解决了哪些问题为什么是的发展历程容器的配置地狱是什么从到下一代企业级服务开发在移动开发领域 《 Kotlin + Spring Boot : 下一代 Java 服务端开发 》 Kotlin + Spring Boot : 下一代 Java...

    springDevBird 评论0 收藏0
  • Android 开发学习 - Kotlin

    摘要:开发学习前言最近版本上线后手上没有什么工作量就下来看看,以下为学习相关内容。用对象表达式和对象声明巧妙的实现了这一概念。在中这就是或者叫类型系统致力与消灭异常。 Android 开发学习 - Kotlin 前言 - 最近版本上线后手上没有什么工作量就下来看看 Kotlin ,以下为学习相关内容 。以下代码的写法存在多种,这里只列举其一 单利 java 单例模式 &...

    jas0n 评论0 收藏0
  • SpringBoot 2.X Kotlin 系列之Reactive Mongodb 与 JPA

    摘要:一本节目标前两章主要讲了的基本操作,这一章我们将学习使用访问,并通过完成简单操作。这里有一个问题什么不选用数据库呢答案是目前支持。突出点是,即非阻塞的。二构建项目及配置本章不在讲解如何构建项目了,大家可以参考第一章。 showImg(https://segmentfault.com/img/remote/1460000018819338?w=1024&h=500); 一、本节目标 前两...

    MSchumi 评论0 收藏0

发表评论

0条评论

cocopeak

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<