Kotlin 第八章:接口
来源:互联网 发布:facebook 聊天软件 编辑:程序博客网 时间:2024/06/06 04:06
Kotlin 第八章:接口
Kotlin 的接口很像 java 8。它们都可以包含抽象方法,以及方法的实现。和抽象类不同的是,接口不能保存状态。可以有属性但必须是抽象的,或者提供访问器的实现。
接口用关键字 interface
来定义:
interface MyInterface { fun bar() fun foo() { //函数体是可选的 }}
接口的实现
一个类或对象可以实现一个或多个接口
class Child : MyInterface { fun bar () { //函数体 }}
接口中的属性
可以在接口中申明属性。接口中的属性要么是抽象的,要么提供访问器的实现。接口属性不可以有后备字段。而且访问器不可以引用它们。
interface MyInterface { val property: Int // abstract val propertyWithImplementation: String get() = "foo"// 提供访问器 getter,可以直接获取 propertyWithImplementation 的值foo fun foo() { print(property) } }class Child : MyInterface { override val property: Int = 29}
解决重写冲突
当我们在父类中声明了许多类型,有可能出现一个方法的多种实现。比如:
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() }}
同类的重写类似,接口也一样,如果父类中声明了许多类型,有可能出现一个方法的多种实现,必须复写这个成员并且提供自己的实现,要使用父类中提供的方法,用 super<Base>
来表示。
A
B
接口都有声明了 foo()
bar()
函数。它们都实现了 foo()
方法,但只有 B
实现了 bar()
, bar()
在 A
中并没有声明它是抽象的,这是因为在接口中如果函数没有函数体,那么默认是抽像的。C
实体类需要重写并实现 bar()
,而 D
类,不用重写 bar()
方法,因为继承的 B
接口已经实现了。由于继承了两个 foo()
的实现,所以用 super<Base>
来区分。
写在最后
其实在 Kotlin 中,接口和在 Java 中的区别并不大,只要阅读学习一下,用不了几分钟就能明白的。好,今天的学习跟到这里了,下一篇文章一起继续学习 Kotlin 的内容。
阅读全文
0 0
- Kotlin 第八章:接口
- Kotlin 从学习到 Android 第八章 接口
- 《Kotlin 程序设计》第八章 Kotlin 集成Spring Boot开发
- kotlin-接口
- Kotlin 接口
- Kotlin-接口
- Kotlin 接口
- kotlin 第八站
- java第八章(3)接口
- 第八章 接口与内部类
- 第八章接口与内部类
- Kotlin 类、对象、接口
- Kotlin基础教程-接口
- Kotlin Reference (六) 接口
- Kotlin-10.接口(interface)
- Kotlin 学习之接口
- Kotlin-2.3-接口
- Kotlin之接口
- 第一篇:JAVA获得设备信息
- BigDecimal 加,减,乘,除 详解
- camera2 opengl实现滤镜效果录制视频 三 录音
- vue中使用百度地图
- codeforces #430 (div2)
- Kotlin 第八章:接口
- 解决matlab 2014b的Test checkout of feature 'Compiler' failed
- Hbase shell基本操作
- 解决键盘遮挡注册或登录按钮
- maven四
- Adaboost算法
- 北京现共享男友 盘点那些奇葩的共享物品---众智云
- 两个单链表相交,求开始相交的点
- yum 安装Java8