【2023】Kotlin教程 第二篇 面向对象与函数式编程 第12章 抽象类与接口 12.2 使用接口 12.2.5 接口中具体函数和属性

【2023】Kotlin教程

在这里插入图片描述

第二篇 面向对象与函数式编程

第12章 抽象类与接口

设计良好的软件系统应该具备“可复用性”和“可扩展性”,能够满足用户需求的不断变更。使用抽象类和接口是实现“可复用性”和“可扩展性”重要的设计手段。

12.2 使用接口

比抽象类更加抽象的是接口,接口中主要应该包含抽象函数和抽象属性,但是根据需要可以有具体函数和属性。

【提示】 接口和抽象类都可以有抽象函数和属性,也可以具体函数和属性。那么接口和抽象类有什么区别?接口不能维护一个对象状态,而抽象类可以,因为维护一个对象状态需要支持字段,而接口中无论是具体属性还是抽象属性,后面都没有支持字段。

12.2.5 接口中具体函数和属性

在Kotlin中接口主要成员是抽象函数和属性,但是也有具体函数和属性。接口中的抽象函数和属性是必须要实现的,而具体函数和属性是可选实现的,根据自己的业务需求选择是否重写它们。

InterfaceA 接口代码:

interface InterfaceA {
    
    
    fun methodA()
    fun methodB(): String

    fun methodC(): Int {
    
    
        return 0
    }

    fun methodD(): String {
    
    
        return "这是默认函数..."
    }

}

在接口InterfaceA中声明了两个抽象函数methodA和methodB,以及两个具体函数methodC和methodD,并给出了具体实现。

实现接口的实例代码:

class ABC : InterfaceA {
    
    

    override fun methodA() {
    
    }

    override fun methodB(): String {
    
    
        return "实现methodB 函数"
    }

    override fun methodC(): Int {
    
    
        return 500
    }

}

实现接口时接口中原有的抽象函数在实现类中必须实现。具体函数可以根据需要有选择重写。上述代码中ABC类实现了InterfaceA接口中的两个抽象函数,并重写了methodB。

调用代码:

fun main() {
    
    

    val abc = ABC()

    println(abc.methodB())

    println(abc.methodC())

    println(abc.methodD())
}

在这里插入图片描述

从运行结果可见,调用函数methodC它是调用类ABC中的实现。调用函数methodD,是调用接口InterfaceA中的实现。

猜你喜欢

转载自blog.csdn.net/weixin_44226181/article/details/130004451
今日推荐