Kotlin 接口(三)
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 接口(三)相关推荐
- 从Java到Kotlin(三)
本篇文章主要对比Java跟Kotlin中的类和接口的写法. 目录 一.类的声明 二.构造函数 三.函数的参数 四.创建类的实例 五.数据类 六.枚举类 七.属性 八.内部类 九.可见性修饰符 十.继承 ...
- Kotlin基础(三)
Kotlin基础(三) 文章目录 Kotlin基础(三) 3.集合类 3.1 不可变List 3.2 可变集合MutableList 3.3 遍历List元素 3.4 List元素操作函数 3.5 L ...
- Java编程那些事儿70——抽象类和接口(三)
Java编程那些事儿70--抽象类和接口(三) 陈跃峰 出自:http://blog.csdn.net/mailbomb 8.9.3 抽象类和接口的比较 抽象类和接口都是进行面向对象设计时专用的设计结 ...
- android kotlin 接口回调
kotlin 接口回调的要相对于java有太多的代码简洁写 这也是新语言的优势 让语言越来越人性化简单化 在这里java的接口回调就不书写了 直接上kotlin 创建一个我们想要的回调 class ...
- kotlin的三目运算
kotlin的三目运算 kotlin中不再有java中的三目运算格式,比如a>b?a:b 取而代之的是直接用if else模式 格式:if(a>b) a else b
- Kotlin第三章:AndroidUI简介
1. 常见的基础布局容器 笔记来源https://songyubao.com/book/primary/ui/viewgroup.html 视频来源 https://www.bilibili.com/ ...
- 【软件开发底层知识修炼】二十三 ABI-应用程序二进制接口三之深入理解函数栈帧的形成与摧毁
上两篇文章我们初步接触了ABI-应用程序二进制接口的概念,点击链接查看上一篇文章:[软件开发底层知识修炼]二十二 ABI-应用程序二进制接口 二.了解了为什么会有ABI的存在.本篇文章继续学习ABI ...
- php接口三结构,grape动态PHP结构(三)——API接口
一.app视图与控制器 1)路由 这里的v1.v2就是模块,由于客户端版本一直在迭代的,那么一些老版本的客户端调用的接口就得保留起来,使得兼容.新版本就直接调用新接口. 还有一种是写html页面,在客 ...
- Java复习五:抽象类+模板设计方法+接口+三种工厂模式
抽象类 类的设计应该保证父类和子类能够共享特征.有时将一个父类设计的非常抽象,以至于它没有具体的实例,这样的类叫做抽象类 abstract可以修饰类.抽象类 抽象类不可以实例化 抽象类中一定有 ...
最新文章
- [转]语音识别中区分性训练(Discriminative Training)和最大似然估计(ML)的区别...
- STM8控制4位LED数码管显示数字
- Vue+Leaflet实现加载OSM显示地图
- Vue+Openlayers实现绘制线段并测量距离显示
- 采访 | Dou. 愿你背着相机出行,归来仍是少年。
- Python与MySQL连接
- Java学习系列(十四)Java面向对象之细谈线程、线程通信(上)
- 内部通信服务Factory(WCF)
- 对于软件测试四大误区的认识
- 关于 System.getProperty
- Asp.net1.0 升级 ASP.NET 2.0 的几个问题总结 (转)
- linux 截图软件安装,Ubuntu 安装截图工具Shutter,并设置快捷键 Ctrl+Alt+A
- 遥感数据下载网站汇总
- 如何使用速问速答求解一元二次方程
- SpringBoot整合JWT(二)
- 9.mysql SQL面试题
- 达梦数据库DM8的DM管理工具manger命令行启动时出错Manager:10369的处理方法
- 知道这六种拍摄技巧,让你玩转夕阳拍摄
- 基于STM32MP157的鸿蒙学习(一)— 资料下载及入门
- 遍历HashMap中元素的三种方法