文章目录

  • 背景
  • 接口定义
  • 接口实现
    • 实例
  • 接口中的属性
    • 实例
  • 函数重写
    • 实例

背景

  • 学习,记录分享,坚持开源!

接口定义

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

interface MyInterface {fun call() // 未实现fun call2A(){ // 已实现println("> call2A 允许方法有默认实现")}}

接口实现

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

// 一个类或者对象可以实现一个或多个接口
class Face: MyInterface{override fun call() {}
}

实例

interface MyInterface {fun call() // 未实现fun call2A(){ // 已实现println("> call2A 允许方法有默认实现")}}// 一个类或者对象可以实现一个或多个接口
class Face: MyInterface{override fun call() {println("> call 方法重写:free coding")}
}

调用:

private fun MyInterfaceTest() {println("> ---MyInterfaceTest---")var face = Face()face.call()face.call2A()}

输出结果:

I/System.out: > ---MyInterfaceTest---
I/System.out: > call 方法重写:free coding
I/System.out: > call2A 允许方法有默认实现


接口中的属性

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

实例

interface InterfaceA {var name: String // 抽象属性}class MyImpl: InterfaceA{override var name: Stringget() = "接口A-属性name-重写"set(value) {}
}

调用:

private fun ATest() {println("> ---ATest---")var implA = MyImpl()println("> 重写属性 name:${implA.name}")}

输出结果:

I/System.out: > ---ATest---
I/System.out: > 重写属性 name:接口A-属性name-重写


函数重写

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

实例

interface InterfaceP {fun call(){println("> InterfaceP call 已实现")}fun hangUp()    // 未实现,没有方法体,是抽象的
}interface InterfaceQ{fun call(){println("> InterfaceQ call 已实现")}fun hangUp(){println("> InterfaceQ hangUp 已实现")}
}// 只实现接口 InterfaceP
class PImpl: InterfaceP{override fun hangUp() {println("> 重写接口 InterfaceP 中未实现的方法 hangUp")}
}// 实现多个接口 InterfaceP 和 InterfaceQ
class PQImpl: InterfaceP, InterfaceQ{override fun call() {super<InterfaceP>.call()super<InterfaceQ>.call()}override fun hangUp() {super.hangUp()}}

调用:

private fun PQTest() {println("> ---PQTest---")var pqImpl = PQImpl()pqImpl.call()pqImpl.hangUp()}

输出结果:

I/System.out: > ---PQTest---
I/System.out: > InterfaceP call 已实现
I/System.out: > InterfaceQ call 已实现
I/System.out: > InterfaceQ hangUp 已实现

  • 实例中接口 InterfacePInterfaceQ 都定义了方法 call()hangUp(), 两者都实现了 call(), InterfaceQ 实现了 hangUp()

  • 因为 PImpl 是一个实现了 InterfaceP 的具体类,所以必须要重写 hangUp() 并实现这个抽象方法。

  • 然而,如果我们从 InterfacePInterfaceQ 派生 PQImpl,我们需要实现多个接口继承的所有方法,并指明 PQImpl 应该如何实现它们。

  • 这一规则 既适用于继承单个实现(hangUp())的方法也适用于继承多个实现(call())的方法。


技术永不眠!我们下期见!

Android Kotlin基础学习 - 接口相关推荐

  1. Kotlin基础学习(1)

    Kotlin基础学习(1) 本文主要讲解kotlin的部分基础知识,并不是全部基础. 提示:纯属个人理解,如有理解错误,欢迎留言指正批评. 一.Null检查机制 kotlin对于声明可为空的参数,使用 ...

  2. Android编译及编译脚本、Android构建基础学习笔记

    Android编译及编译脚本.Android构建基础学习笔记 Android编译及编译脚本 概述 Android.mk转换成Android.bp 例子(简单Android.mk文件转Android.b ...

  3. Kotlin 基础学习

    学! 原文:https://blog.csdn.net/CrazyApes/article/details/122091459 文章目录 Kotlin 线上编写 变量 lateinit延迟初始化 空安 ...

  4. Android零基础学习指南,从入门到精通一战通关

    Android程序员想要入门进阶,升职拿高薪,一般需要做出以下努力: 明确的学习进阶规划,系统化掌握更深层次的技术 弄清目标岗位的能力需求,针对性提升技术能力; 增加实战经验,高效率提高解决实际问题的 ...

  5. Kotlin基础学习(一)—— Kotlin 简介

    一.背景 2017年 的Google I/O大会上,Kotlin称为官方的Android开发语言. 发明公司:JetBrains(最负盛名的IDE创造者,包括Android Studio.Intell ...

  6. Android kotlin基础语法

    1.继承类和实现接口 继承类是冒号连接,java是extends连接.实现接口是逗号连接,java是implements连接 class MainActivity : AppCompatActivit ...

  7. Android开发基础学习总结

    最近一直在学习安卓开发,主要从安卓的基础组件,布局,Activity学起,也是边学习边整理笔记,希望可以给需要帮助的人解决能解决掉的问题,以后也会慢慢更新的. 一.Android布局 1.Androi ...

  8. 关于Android零基础学习的思考

    看了很多帖子,只发现了一篇给新手指明道路的[[转]学习Android需要的基础].对于已有编程经验的人来说,学习相对轻松.而...今天特此发帖一份,帮助那些观望而不知道学什么的人.本人才疏学浅,仅把自 ...

  9. Android 零基础学习之路

    第一阶段:Java面向对象编程 1.Java基本数据类型与表达式,分支循环. 2.String和StringBuffer的使用.正则表达式. 3.面向对象的抽象,封装,继承,多态,类与对象,对象初始化 ...

最新文章

  1. iPhone开发四剑客之《Objective-C基础教程》
  2. 关于meta的一些知识
  3. php laravel 排序,php – 在laravel中排序数组
  4. WebShop WebSocket server 和WebSocket客户端的一对多关系维护
  5. 晒晒女儿学国画一学期的成果
  6. CSS系列讲解-总目录
  7. 补习系列(9)-springboot 定时器,你用对了吗
  8. linux 移动硬盘 大于4g,Linux下挂大于2G的NTFS格式移动硬盘方法
  9. ubuntu内核版本管理
  10. C# UrlEncoding
  11. FH162儿童电子液晶手写板方案芯片开发
  12. sobol灵敏度分析matlab_灵敏度分析_使用MATLAB编写.doc
  13. 词语提取小工具开放啦
  14. 华为P30虽好但太贵?2699元起的荣耀20系列来了
  15. 《数据库系统》(四) 概念数据库设计
  16. MPLS和LDP基本配置
  17. SpringCloud系列之六
  18. 购袖珍电子计算机笔记本,购买迷你电脑,哪个品牌值得信赖
  19. access百度翻译 get_PowerShell调用百度翻译API
  20. 【物理应用】超声场可视化仿真模拟【含GUI Matlab源码 1494期】

热门文章

  1. java 访问 domino_Java远程访问Domino数据库
  2. 绿色数据中心的建设概述
  3. python xmind库_用Python解析XMind
  4. 基于PDFBox组件的JPEG转换为PDF输出的尝试
  5. 2020年锅炉压力容器压力管道安全管理(全部)考试及锅炉压力容器压力管道安全管理(全部)考试内容
  6. 一起学python-一起学Python:列表介绍
  7. Android地图定位开发技术汇总
  8. Spark SQL 详解
  9. 笔记本和台式机之间的谷歌浏览器书签手动同步方法
  10. matlab nsct工具箱,非下采样Contourlet变换工具包 nsct_toolbox (from matlab central)