Kotlin 接口与 Java 8 类似,使用 interface 关键字定义接口,允许方法有默认实现:

interface MyInterface {fun bar()    // 未实现fun foo() {  //已实现// 可选的方法体println("foo")}
}

接口实现:

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

class Child : MyInterface {override fun bar() {// 方法体}
}

例如:

interface MyInterface {fun bar()fun foo() {// 可选的方法体println("foo")}
}
class Child : MyInterface {override fun bar() {// 方法体println("bar")}
}
fun main(args: Array<String>) {val c =  Child()c.foo();c.bar();}

输出:

foo
bar

接口中的属性

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

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

例如:

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

输出:

ABbar

Kotlin 接口(三)相关推荐

  1. 从Java到Kotlin(三)

    本篇文章主要对比Java跟Kotlin中的类和接口的写法. 目录 一.类的声明 二.构造函数 三.函数的参数 四.创建类的实例 五.数据类 六.枚举类 七.属性 八.内部类 九.可见性修饰符 十.继承 ...

  2. Kotlin基础(三)

    Kotlin基础(三) 文章目录 Kotlin基础(三) 3.集合类 3.1 不可变List 3.2 可变集合MutableList 3.3 遍历List元素 3.4 List元素操作函数 3.5 L ...

  3. Java编程那些事儿70——抽象类和接口(三)

    Java编程那些事儿70--抽象类和接口(三) 陈跃峰 出自:http://blog.csdn.net/mailbomb 8.9.3 抽象类和接口的比较 抽象类和接口都是进行面向对象设计时专用的设计结 ...

  4. android kotlin 接口回调

    kotlin 接口回调的要相对于java有太多的代码简洁写  这也是新语言的优势  让语言越来越人性化简单化 在这里java的接口回调就不书写了 直接上kotlin 创建一个我们想要的回调 class ...

  5. kotlin的三目运算

    kotlin的三目运算 kotlin中不再有java中的三目运算格式,比如a>b?a:b 取而代之的是直接用if else模式 格式:if(a>b) a else b

  6. Kotlin第三章:AndroidUI简介

    1. 常见的基础布局容器 笔记来源https://songyubao.com/book/primary/ui/viewgroup.html 视频来源 https://www.bilibili.com/ ...

  7. 【软件开发底层知识修炼】二十三 ABI-应用程序二进制接口三之深入理解函数栈帧的形成与摧毁

    上两篇文章我们初步接触了ABI-应用程序二进制接口的概念,点击链接查看上一篇文章:[软件开发底层知识修炼]二十二 ABI-应用程序二进制接口 二.了解了为什么会有ABI的存在.本篇文章继续学习ABI ...

  8. php接口三结构,grape动态PHP结构(三)——API接口

    一.app视图与控制器 1)路由 这里的v1.v2就是模块,由于客户端版本一直在迭代的,那么一些老版本的客户端调用的接口就得保留起来,使得兼容.新版本就直接调用新接口. 还有一种是写html页面,在客 ...

  9. Java复习五:抽象类+模板设计方法+接口+三种工厂模式

    抽象类 类的设计应该保证父类和子类能够共享特征.有时将一个父类设计的非常抽象,以至于它没有具体的实例,这样的类叫做抽象类 abstract可以修饰类.抽象类 ​ 抽象类不可以实例化 ​ 抽象类中一定有 ...

最新文章

  1. [转]语音识别中区分性训练(Discriminative Training)和最大似然估计(ML)的区别...
  2. STM8控制4位LED数码管显示数字
  3. Vue+Leaflet实现加载OSM显示地图
  4. Vue+Openlayers实现绘制线段并测量距离显示
  5. 采访 | Dou. 愿你背着相机出行,归来仍是少年。
  6. Python与MySQL连接
  7. Java学习系列(十四)Java面向对象之细谈线程、线程通信(上)
  8. 内部通信服务Factory(WCF)
  9. 对于软件测试四大误区的认识
  10. 关于 System.getProperty
  11. Asp.net1.0 升级 ASP.NET 2.0 的几个问题总结 (转)
  12. linux 截图软件安装,Ubuntu 安装截图工具Shutter,并设置快捷键 Ctrl+Alt+A
  13. 遥感数据下载网站汇总
  14. 如何使用速问速答求解一元二次方程
  15. SpringBoot整合JWT(二)
  16. 9.mysql SQL面试题
  17. 达梦数据库DM8的DM管理工具manger命令行启动时出错Manager:10369的处理方法
  18. 知道这六种拍摄技巧,让你玩转夕阳拍摄
  19. 基于STM32MP157的鸿蒙学习(一)— 资料下载及入门
  20. 遍历HashMap中元素的三种方法

热门文章

  1. jQuery在线选座订座(影院篇)
  2. oracle中的数据读取与查找
  3. RequestDispatcher对象的应用-请求包含
  4. python测试c语言代码_numpy C语言源代码调试(一)
  5. R 多变量数据预处理_超长文详解:C语言预处理命令
  6. php 匹配div正则表达式,Php正则表达式匹配div
  7. 计算机名字需要加_PC吗,ecs计算机名字
  8. Linux求100内的质数,用SQL计算100以内的质数
  9. python 依赖包管理_依赖管理
  10. PNG免扣苹果IPHONE手机模型样机,让一切简单一点!