第十三節(jié) 繼承、抽象類(lèi)、接口

1、open關(guān)鍵字
定義連個(gè)類(lèi)Father、Son
Son繼承Father


image.png

看下java代碼


image.png

Father類(lèi)是final的,所以不能繼承,需要加上open關(guān)鍵字修飾,成員變量和成員方法都一樣

fun main(args: Array<String>) {
    var son=Son()
    son.horbe()

}


open class Father{
    open var name="張三"
    open var age=20
    open fun horbe()
    {
        println("父親習(xí)慣抽煙")
    }
}
class Son:Father(){
    override var name="張小三"
    override var age=10
    override fun horbe() {
        println("孩子喜歡看書(shū)")
    }

}

輸出:


image.png

2、抽象類(lèi)
抽象類(lèi)用abstract表示,抽象類(lèi)可以沒(méi)有抽象方法和抽象字段,抽象類(lèi)不需要使用open關(guān)鍵字


fun main(args: Array<String>) {
    var son=Son()
    println(son.name)
    println(son.age)
    son.horbe()

}


abstract class Father{
    abstract var name:String
    var age=20
    abstract fun horbe()
}
class Son:Father(){
    override var name="張小三"
    override fun horbe() {
        println("孩子喜歡看書(shū)")
    }
}

輸出:


image.png

3、接口


fun main(args: Array<String>) {
    var son=Son()
    println(son.name)
    println(son.age)
    son.horbe()
    son.ride()
    son.drive()

}


abstract class Father{
    abstract var name:String
    var age=20
    abstract fun horbe()
}

class Son:Father(),RideBike,DriveCar{
    override fun ride() {
        println("騎自行車(chē)")
    }

    override fun drive() {
        println("開(kāi)車(chē)")
    }

    override var name="張小三"
    override fun horbe() {
        println("孩子喜歡看書(shū)")
    }
}

interface RideBike{
    fun ride()
}

interface DriveCar{
    fun drive()
}

輸出:


image.png

4、接口細(xì)節(jié)
kotlin接口中的字段不能實(shí)現(xiàn),只能定義,但在java中是可以的


image.png

kotlin接口中的方法是可以實(shí)現(xiàn)的,但是java中是不可以的

interface DriveCar{
    fun drive(){
        println("開(kāi)車(chē)")
    }
    var str:String
}

5、is關(guān)鍵字
類(lèi)似于java中instanceof關(guān)鍵字


fun main(args: Array<String>) {
    val shepHerdDog:Dog = ShepHerdDog()
    //判斷完之后已將將shepHerdDog類(lèi)型由Dog類(lèi)型轉(zhuǎn)換為ShepHerdDog類(lèi)型
    if(shepHerdDog is ShepHerdDog){
        shepHerdDog.herdShep()
    }
}

//Dog狗
abstract class Dog
//牧羊犬
class ShepHerdDog:Dog(){
    //功能
    fun herdShep(){
        println("牧羊犬放羊")
    }
}
//中華田園犬
class RuralDog:Dog(){
    //功能
    fun watchDoor(){
        println("中華田園犬看家")
    }
}

輸出:


image.png
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容