Kotlin学习之-5.3 接口
来源:互联网 发布:js计算100的阶乘 编辑:程序博客网 时间:2024/06/09 23:34
Kotlin学习之-5.3 接口
Kotlin中的接口和Java 8中的接口很接近。它们可以定义抽象函数,也可以实现。和抽象类的区别在于接口不能存储状态。接口可以拥有属性,但是这些属性必须是抽象的或者提供访问方法的实现。
接口使用关键字interface
来定义
interface MyInterface { fun bar() fun foo() { // 可选的函数主体 }}
实现接口
一个类或者一个对象可以实现一个或者多个接口
class Child: MyInterface { override fun bar() { // ... }}
接口中的属性
可以在接口中定义属性。在接口中定义属性既可以是抽象的,也可以提供访问方法的实现。定义在接口中的属性不能有backing field,并且在接口中定义的访问方法也不能引用他们。
interface MyInterface { val prop: Int // 抽象的 val propertyWithImplementation: String get() = "foo" fun foo() { print(prop) }}class Child : MyInterface { override val prop: 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() } override fun bar() { super<B>.bar() }}
接口A和B都定义了foo()
和bar()
函数。它们俩都实现了foo()
,但是只有B实现了bar()
, 在A中bar()
没有被描述成抽象的,因为当函数没有主体时,这是接口的默认写法。 现在如果我们继承A来写一个实体类C,必须复写bar()
函数并提供它的实现。
然而,如果继承A 和B 来写类D,我们需要实现所有从接口中重复继承的方法,并且写明D 是如何实现他们的。这条规则既适用单继承的方法,也适用于多继承的方法。
PS,我会坚持把这个系列写完,有问题可以留言交流,也关注专栏Kotlin for Android Kotlin安卓开发
阅读全文
0 0
- Kotlin学习之-5.3 接口
- Kotlin 学习之接口
- Kotlin 官方学习教程之接口
- Kotlin之接口
- Kotlin基本使用之接口
- Kotlin编程之接口和实现接口
- kotlin 学习之 HelloWorld
- Kotlin学习之函数
- Kotlin学习之Range
- Kotlin 学习之数据类型
- Kotlin学习之跳转
- kotlin学习之旅
- Kotlin 学习之准备
- Kotlin学习之kotlin-android-extensions
- Kotlin学习笔记(1)-类,接口,对象
- kotlin学习之嵌套类
- Kotlin学习之枚举类
- Kotlin学习之委托机制
- js小知识
- linux中shell条件判断if中的-a到-z的意思
- 屏幕录制在h323上的实现
- 取消cell的点击效果
- 为单独一个请求创建php-fpm进程池
- Kotlin学习之-5.3 接口
- 智邦国际:《欢乐颂》是这么玩信息化企业管理的
- unity动画重置
- 刷清橙OJ--A1065.龟兔赛跑
- [SSH网上商城]框架搭建
- 从Activity返回后切换fragment的显示
- @PostConstruct 和 @PreDestroy 使用
- [dhtmlxGantt]浮动Milestone显示
- 为什么Kafka那么快