日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

Kotlin類的繼承實現詳細介紹_Android

作者:niuyongzhi ? 更新時間: 2022-10-31 編程語言

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

類中的方法默認也是關閉的。如果需要子類復寫父類的方法,也必須用open修飾。

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

//父類必須用open修飾,才能夠被繼承
open class Person(val name:String) {
    var age = 0
    //父類定義的函數,必須有open修飾,子類才能復寫
    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關鍵字來檢查某個對象的類型。

    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中都是空實現。真正的實現是由kotlin編譯器完成的。

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

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

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是一個類型轉換操作符。可以將子類類型轉換成父類、抽象類接口。

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

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

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

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

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

?

原文鏈接:https://blog.csdn.net/niuyongzhi/article/details/126612777

欄目分類
最近更新