最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Kotlin類的繼承實現(xiàn)詳細介紹

 更新時間:2022年09月06日 09:43:33   作者:niuyongzhi  
這篇文章主要介紹了Kotlin類的繼承,在Java中類的繼承默認是繼承父類的方法和參數(shù)的,但是在kotlin中默認是不繼承的,那么我們接下來來驗證

1.在kotlin中,默認類都是封閉的closed的。如果要讓某個類開放繼承,必須用open關(guān)鍵字修飾

類中的方法默認也是關(guān)閉的。如果需要子類復(fù)寫父類的方法,也必須用open修飾。

1)定義父類,用open將類繼承打開。用open將函數(shù)的復(fù)寫打開。

//父類必須用open修飾,才能夠被繼承
open class Person(val name:String) {
    var age = 0
    //父類定義的函數(shù),必須有open修飾,子類才能復(fù)寫
    open fun doWork(){
        println("do nothing")
    }
}

2)定義子類。屬性是不需要open字段修飾的。子類默認繼承父類的屬性

class Student(name: String) : Person(name) {
    override fun doWork() {
        println("do homework")
    }
}
fun main() {
    val student = Student("HanMei")
    student.age = 20
    println(student.name)
    println(student.age)
    student.doWork()
}

2.kotlin中通過is關(guān)鍵字來檢查某個對象的類型。

    val student = Student("HanMei")
    println(student is Student)
    println(student is Person)
    println(student is Any)

Java中用 instanceof 來檢查某個對象的類型。

    Student student = new Student();
    System.out.println(student instanceof Student);
    System.out.println(student instanceof Person);

3.在kotlin中存在一個超類Any。所有的類都他的子類。就向Java中的Object超類一樣。

Any類中也定義了和Object一樣的方法。但是在Any中都是空實現(xiàn)。真正的實現(xiàn)是由kotlin編譯器完成的。

public open class Any {
    public open operator fun equals(other: Any?): Boolean
    public open fun hashCode(): Int
    public open fun toString(): String
}

在定義的子類中,可以復(fù)寫這些方法

class Student(name: String) : Person(name) {
    override fun doWork() {
        println("do homework")
    }
    override fun toString(): String {
        return "name:$name age:$age"
    }
    override fun hashCode(): Int {
        return super.hashCode()
    }
    override fun equals(other: Any?): Boolean {
        return super.equals(other)
    }
}

4.as是一個類型轉(zhuǎn)換操作符??梢詫⒆宇愵愋娃D(zhuǎn)換成父類、抽象類接口。

定義一個方法,接收父類類型。

fun sayHello(p: Person) {
    println("Hello," + p.name)
}

由于類的多態(tài),我們可以直接把子類類型賦值給父類類型。

也可以通過as字段轉(zhuǎn)換成父類類型,通常我們不這樣做。

    val student = Student("HanMei")
    sayHello(student)
    sayHello((student as Person))

 

到此這篇關(guān)于Kotlin類的繼承實現(xiàn)詳細介紹的文章就介紹到這了,更多相關(guān)Kotlin類的繼承內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論

准格尔旗| 铜梁县| 万全县| 蒙山县| 醴陵市| 伊金霍洛旗| 类乌齐县| 沈丘县| 松阳县| 南陵县| 井陉县| 大埔县| 平果县| 裕民县| 云南省| 渝北区| 江永县| 无极县| 黄梅县| 满洲里市| 堆龙德庆县| 永德县| 宝丰县| 外汇| 衢州市| 息烽县| 马尔康县| 东乌珠穆沁旗| 成武县| 桐柏县| 仙游县| 错那县| 喜德县| 明光市| 平遥县| 武清区| 云梦县| 沽源县| 枣强县| 福贡县| 堆龙德庆县|