【Android开发日志】Kotlion 面向对象编程 – 接口(14)

接口是用于实现多态编程的的重要组成部分。任何一个类只能继承一个父类,但可以实现任意接口。就像一个孩子只能有一个父亲,但他可以有很多技能。

我们继续用之前的HumanStudent。我们这里来给Student创建Study接口,让学生学习起来。新建一个名为Studyinterface
在这里插入图片描述
在这里插入图片描述
我们可以在接口函数中定义很多抽象行为,然后再具体中实现。下面我们定义两个学习行为:

interface Study {
    fun learnMath()
    fun learnEnglish()
}

有了行为,我们回到Student.kt里,为了便于学习接口,更改代码如下:

package com.example.helloword

class Student(name: String, age: Number): Human(name,age), Study{
    override fun learnEnglish() {
        println(name + "is learning English.")
    }

    override fun learnMath() {
        println(name + "is learning Math.")
    }
}

同时给出Human.kt的代码,以防出错:

package com.example.helloword

open class Human(val name: String,val age: Number) {

}
  • Kotlin接口统一使用:冒号,而有继承也需要用到:时,用,隔开即可。
  • 接口后面没有括号,因为没有构造函数
  • Kotlin中使用override来重写父类或实现接口函数。这是被强制要求的修饰符
  • Study结构定义了两个函数,Student类里必须实现这两个函数。

下面我们在Student.kt里执行以下main函数:

fun main(){
    val xiaoming = Student("Xiao Ming", 22)
    xiaoming.learnEnglish()
    xiaoming.learnMath()
}

我们实例化Student类为xioaming。并执行了两个接口函数。结果如下:
在这里插入图片描述
我们继续修改Student.kt里的代码:

fun tuDo(study:Study){
    study.learnMath()
    study.learnEnglish()
}
fun main(){
    val xiaoming = Student("Xiao Ming", 22)
    tuDo(xiaoming)
}

此段代码为解释面向接口编程,也称多态

  • 原本我们可直接调用xiaoming来实现两个动作,而这里定义一个tuDo()函数。

  • tuDo()函数可接收一个类型为Study的参数,因此我们定义的xiaoming实例可以传入TuDor()函数。

  • tuDo()内我们调用了两个函数。实现效果和上面相同。

大家可能还有个疑问:接口函数里什么也没写,没用啊!当然可以写啦,看下面代码:

interface Study {
    fun learnMath()
    fun learnEnglish(){
        println("Do English homework.")
    }
}

我们定义了learnEnglish()的具体动作。这样此函数就有函数体了。有函数体后,函数是默认可用的,不需要去override重写的,而你如果重写了,就按你重写的执行了啦。

如果你预先定义的没有函数体,则是必须要override重写的哦。

我们将下段代码删除:

override fun learnEnglish() {
    println(name + "is learning English.")
}

仍然运行main,得到结果:
在这里插入图片描述
好啦,我们事先写好的语句出现。有了接口,我们可以少定义很多重复的函数。

可是,我们有的时候只希望一个函数运行在限定的空间内,这就要用到函数可见性修饰符
修饰符有以下四种:

修饰符权限
public所有类可见(默认)
private当前类可见
protected当前类、子类可见
internal同一模块中的类可见

以上的详细运用,大家在平时实践中即可掌握。


欢迎关注小试编程
​​​​在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小试编程

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值