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

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

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

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

類中的方法默認(rè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字段修飾的。子類默認(rèn)繼承父類的屬性

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)鍵字來檢查某個(gè)對象的類型。

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

Java中用 instanceof 來檢查某個(gè)對象的類型。

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

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

Any類中也定義了和Object一樣的方法。但是在Any中都是空實(shí)現(xiàn)。真正的實(shí)現(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是一個(gè)類型轉(zhuǎn)換操作符??梢詫⒆宇愵愋娃D(zhuǎn)換成父類、抽象類接口。

定義一個(gè)方法,接收父類類型。

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

相關(guān)文章

最新評論

福贡县| 色达县| 比如县| 登封市| 吉安县| 灌阳县| 乌鲁木齐市| 垦利县| 长武县| 尚义县| 武乡县| 静安区| 兴文县| 大关县| 哈密市| 古浪县| 澜沧| 涟水县| 凌云县| 渝北区| 绥宁县| 通城县| 宜丰县| 泰来县| 宣武区| 南郑县| 贵定县| 舞钢市| 潮安县| 滕州市| 隆子县| 仁化县| 佳木斯市| 安徽省| 博乐市| 勐海县| 新安县| 四川省| 勃利县| 鹿邑县| 沽源县|