AI智能
改变未来

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

接口是用于实现

多态编程

的的重要组成部分。任何一个类只能继承一个

父类

,但可以实现任意

接口

。就像一个孩子只能有一个父亲,但他可以有很多技能。

我们继续用之前的

Human

Student

。我们这里来给

Student

创建

Study

接口,让学生学习起来。新建一个名为

Study

interface




我们可以在

接口函数

中定义很多

抽象行为

,然后再具体

中实现。下面我们定义两个学习行为:

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

有了行为,我们回到

Student.kt

里,为了便于学习接口,更改代码如下:

package com.example.hellowordclass 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.hellowordopen 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) 打赏
未经允许不得转载:爱站程序员基地 » 【Android开发日志】Kotlion 面向对象编程 – 接口(14)