Android Kotlin基础学习 - 接口
文章目录
- 背景
- 接口定义
- 接口实现
- 实例
- 接口中的属性
- 实例
- 函数重写
- 实例
背景
- 学习,记录分享,坚持开源!
接口定义
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 已实现
实例中接口
InterfaceP
和InterfaceQ
都定义了方法call()
和hangUp()
, 两者都实现了call()
,InterfaceQ
实现了hangUp()
。因为
PImpl
是一个实现了InterfaceP
的具体类,所以必须要重写hangUp()
并实现这个抽象方法。然而,如果我们从
InterfaceP
和InterfaceQ
派生PQImpl
,我们需要实现多个接口继承的所有方法,并指明PQImpl
应该如何实现它们。这一规则 既适用于继承单个实现
(hangUp())
的方法也适用于继承多个实现(call())
的方法。
技术永不眠!我们下期见!
Android Kotlin基础学习 - 接口相关推荐
- Kotlin基础学习(1)
Kotlin基础学习(1) 本文主要讲解kotlin的部分基础知识,并不是全部基础. 提示:纯属个人理解,如有理解错误,欢迎留言指正批评. 一.Null检查机制 kotlin对于声明可为空的参数,使用 ...
- Android编译及编译脚本、Android构建基础学习笔记
Android编译及编译脚本.Android构建基础学习笔记 Android编译及编译脚本 概述 Android.mk转换成Android.bp 例子(简单Android.mk文件转Android.b ...
- Kotlin 基础学习
学! 原文:https://blog.csdn.net/CrazyApes/article/details/122091459 文章目录 Kotlin 线上编写 变量 lateinit延迟初始化 空安 ...
- Android零基础学习指南,从入门到精通一战通关
Android程序员想要入门进阶,升职拿高薪,一般需要做出以下努力: 明确的学习进阶规划,系统化掌握更深层次的技术 弄清目标岗位的能力需求,针对性提升技术能力; 增加实战经验,高效率提高解决实际问题的 ...
- Kotlin基础学习(一)—— Kotlin 简介
一.背景 2017年 的Google I/O大会上,Kotlin称为官方的Android开发语言. 发明公司:JetBrains(最负盛名的IDE创造者,包括Android Studio.Intell ...
- Android kotlin基础语法
1.继承类和实现接口 继承类是冒号连接,java是extends连接.实现接口是逗号连接,java是implements连接 class MainActivity : AppCompatActivit ...
- Android开发基础学习总结
最近一直在学习安卓开发,主要从安卓的基础组件,布局,Activity学起,也是边学习边整理笔记,希望可以给需要帮助的人解决能解决掉的问题,以后也会慢慢更新的. 一.Android布局 1.Androi ...
- 关于Android零基础学习的思考
看了很多帖子,只发现了一篇给新手指明道路的[[转]学习Android需要的基础].对于已有编程经验的人来说,学习相对轻松.而...今天特此发帖一份,帮助那些观望而不知道学什么的人.本人才疏学浅,仅把自 ...
- Android 零基础学习之路
第一阶段:Java面向对象编程 1.Java基本数据类型与表达式,分支循环. 2.String和StringBuffer的使用.正则表达式. 3.面向对象的抽象,封装,继承,多态,类与对象,对象初始化 ...
最新文章
- iPhone开发四剑客之《Objective-C基础教程》
- 关于meta的一些知识
- php laravel 排序,php – 在laravel中排序数组
- WebShop WebSocket server 和WebSocket客户端的一对多关系维护
- 晒晒女儿学国画一学期的成果
- CSS系列讲解-总目录
- 补习系列(9)-springboot 定时器,你用对了吗
- linux 移动硬盘 大于4g,Linux下挂大于2G的NTFS格式移动硬盘方法
- ubuntu内核版本管理
- C# UrlEncoding
- FH162儿童电子液晶手写板方案芯片开发
- sobol灵敏度分析matlab_灵敏度分析_使用MATLAB编写.doc
- 词语提取小工具开放啦
- 华为P30虽好但太贵?2699元起的荣耀20系列来了
- 《数据库系统》(四) 概念数据库设计
- MPLS和LDP基本配置
- SpringCloud系列之六
- 购袖珍电子计算机笔记本,购买迷你电脑,哪个品牌值得信赖
- access百度翻译 get_PowerShell调用百度翻译API
- 【物理应用】超声场可视化仿真模拟【含GUI Matlab源码 1494期】
热门文章
- java 访问 domino_Java远程访问Domino数据库
- 绿色数据中心的建设概述
- python xmind库_用Python解析XMind
- 基于PDFBox组件的JPEG转换为PDF输出的尝试
- 2020年锅炉压力容器压力管道安全管理(全部)考试及锅炉压力容器压力管道安全管理(全部)考试内容
- 一起学python-一起学Python:列表介绍
- Android地图定位开发技术汇总
- Spark SQL 详解
- 笔记本和台式机之间的谷歌浏览器书签手动同步方法
- matlab nsct工具箱,非下采样Contourlet变换工具包 nsct_toolbox (from matlab central)