Kotlin(七) 接口

接口是用于实现多态编程的重要组成部分。我们都知道,Java是单继承结构的语言,任何一个类最多只能继承一个父类,但是却可以实现任意多个接口,Kotlin也是如此。

首先创建一个Study接口,在创建文件窗口选择"Interface"。

然后在Study接口中添加几个学习相关的函数,注意接口中的函数不要求有函数体,代码如下所示:

然后在Student类中,实现这个接口使用冒号,如果有继承父类,就使用逗号隔开就可以,如图:

实现接口后,会强制实现接口中的方法,我们在实现的方法中打印两句话,然后在main()函数中调用一下,如图:

运行结果如图:

这样我们就将Kotlin中接口的用法基本学完了,是不是很简单?不过为了让接口的功能更加灵活,Kotlin还增加了一个额外的功能:允许对接口中定义的函数进行默认实现。其实Java在JDK 1.8之后也开始支持这个功能了,因此总体来说,Kotlin和Java在接口方面的功能仍然是一模一样的。

下面我们学习一下如何对接口中的函数进行默认实现,修改Study接口中的代码,如下所示:

然后删除Student中的doHomework函数,发现也不会报错,然后我们运行main函数,如图:

现在你已经掌握了Kotlin面向对象编程中最主要的一些内容,接下来我们再学习一个和Java相比变化比较大的部分------函数的可见性修饰符。

熟悉Java的人一定知道,Java中有publicprivateprotecteddefault(什么都不写)这4种函数可见性修饰符。Kotlin中也有4种,分别是publicprivateprotectedinternal,需要使用哪种修饰符时,直接定义在fun关键字的前面即可。下面我详细介绍一下Java和Kotlin中这些函数可见性修饰符的异同。

首先private修饰符在两种语言中的作用是一模一样的,都表示只对当前类内部可见。public修饰符的作用虽然也是一致的,表示对所有类都可见,但是在Kotlin中public修饰符是默认项,而在Java中default才是默认项。前面我们定义了那么多的函数,都没有加任何的修饰符,所以它们默认都是public的。protected关键字在Java中表示对当前类、子类和同一包路径下的类可见,在Kotlin中则表示只对当前类和子类可见。Kotlin抛弃了Java中的default可见性(同一包路径下的类可见),引入了一种新的可见性概念,只对同一模块中的类可见,使用的是internal修饰符。比如我们开发了一个模块给别人使用,但是有一些函数只允许在模块内部调用,不想暴露给外部,就可以将这些函数声明成internal。关于模块开发的内容,我们会在本书的最后一章学习。

表2.2更直观地对比了Java和Kotlin中函数可见性修饰符之间的区别。

表2.2 Java和Kotlin函数可见性修饰符对照表

修饰符 Java Kotlin
public 所有类可见 所有类可见(默认)
private 当前类可见 当前类可见
protected 当前类、子类、同一包路径下的类可见 当前类、子类可见
default 同一包路径下的类可见(默认)
internal 同一模块中的类可见
相关推荐
乐观勇敢坚强的老彭8 分钟前
C++ 竞赛常用算法模板速查表
开发语言·c++·算法
行业研究员9 分钟前
Android内置GPS与腾讯地图定位技术对比分析
android·android定位·腾讯地图定位
离陌在学C#22 分钟前
C# 泛型:从基础到高级应用
开发语言·c#
ly768923 分钟前
Java 设计模式详解:从原则到 23 种经典模式
java·开发语言·设计模式
SomeB1oody25 分钟前
【RustyML入门】2.13. 孤立森林
开发语言·后端·机器学习·rust·教程
萧瑟余晖39 分钟前
Java深入解析篇三十之Java日志框架
java·开发语言
Herbert_hwt1 小时前
【C语言基础】常量、选择结构与运算符全解析
c语言·开发语言·算法
Android-Flutter1 小时前
android WMS 详解(二)
android·kotlin
AI视觉网奇1 小时前
动作识别 视频理解大模型
开发语言·python·音视频
游戏开发爱好者81 小时前
App Store 上传 IPA 自动化,.p8 密钥认证与 CI/CD 接入实战
android·运维·ci/cd·小程序·uni-app·自动化·iphone