Kotlin 初学者继承(extend)

Posted 帅次

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Kotlin 初学者继承(extend)相关的知识,希望对你有一定的参考价值。

Kotlin 继承(extend)

        Kotlin 允许一个类继承自另一个类

        Kotlin 中所有类都继承自 Any 类

        Any 类是所有类的超类,对于没有超类型声明的类是默认超类

        Kotlin 类默认都是封闭的,要让某个类开放继承,必须使用 open 关键字修饰它。

注意:

在 Kotlin 中 Any 类是所有类的超类

在 Java 中 Object 类是所有类的超类

Any 超类

        Any 默认提供了三个函数:

public open class Any 
    
    public open operator fun equals(other: Any?): Boolean

    public open fun hashCode(): Int

    public open fun toString(): String


        从这里发现 无论是类还是函数,都使用了 open 关键字修饰。

        同时发现,这里只是定义了函数,没有实现。为什么呢?因为Kotlin是跨平台语言,可以在android、macOS、Windows、javascript上运行,为了支持跨平台更友好,在不同平台有不同实现,所以在这里并未展示。

继承类

/* 食物基类 */
open class Food
    fun explain() = "Food explain"


class Apple :Food()
    

        不加 open 关键字修饰是不让继承滴,如下图:

函数重写

        在基类中,使用 fun 声明函数时,此函数默认为 final 修饰,不能被子类重写。

        如果允许子类重写该函数,那么必须使用 open 关键字修饰它, 子类重写函数使用 override 关键字。

/* 食物基类 */
open class Food
    //函数必须用 open 关键字修饰,子类才能覆盖
    open fun explain() = "Food explain"

/* 继承Food */
class Apple :Food()
    //使用 override 关键字覆盖父类函数
    override fun explain() = "Apple explain "

        在 Kotlin 中 override 是个关键字而不是注解。

使用

fun main() 
    //多态:父类类型的引用子类类型的对象
    val f: Food = Apple()
    println(f.explain())

属性重写

/* 食物基类 */
open class Food 
    open val price = 100
    ...


/* 继承Food */
class Apple : Food() 
    override var price = 36
    ...


fun main() 
    //多态:父类类型的引用子类类型的对象
    val f: Food = Apple()
    println(f.explain())//Apple explain 36

类型检测(is)

Kotlin的 is运算符 可以用来检查某个对象的类型。

    println(f is Food)//true
    println(f is Apple)//true
    println(f is File)//false

智能类型转换(as)

Kotlin的 as运算符 可以用对某个对象进行类型转换。

以上是关于Kotlin 初学者继承(extend)的主要内容,如果未能解决你的问题,请参考以下文章

kotlin 类的继承

Kotlin 初学者枚举类-密封类-数据类-继承

Kotlin 初学者类的修饰符

Java小白入门200例80之Java继承(extends)

如何从片段 KOTLIN 中调用意图 [重复]

Kotlin 初学者类和对象