Kotlin Android 第8天,从 0 到 ML - 定义类别 / 初始化 / 继承

前言:

   今天来看 类别 / 初始化 / 继承

大纲:

class 结构

宣告 名称  主要建构式   传入参数 
class ironman constructor(titleName: String, playerName: String){…}

主要建构式 constructor 可省略
 class ironman(titleName: String, playerName: String){…}

无定义建构式参数的类别 / 初始化

var mNotParameter = ironmanNotParameter()
mNotParameter.printPlayerInfo()

class ironmanNotParameter constructor(){
    //主要建构式  constructor()
    //第二建构式
    constructor(titleName: String):this()

    //初始化
    init{ println("Ithome 铁人赛 2021")}
    fun printPlayerInfo(){
        println("Title: Kotlin Android 30天,从 0 到 ML , Player: Kevin ")
    }
}

定义建构式参数的类别

var mPlayer = ironmanDefine()
mPlayer.mTitleName = "Kotlin Android 30天,从 0 到 ML"
mPlayer.mPlayerName = "Kevin"
mPlayer.printPlayerInfo()

class ironmanDefine {
    var mTitleName:String = ""
    var mPlayerName:String = ""

    fun printPlayerInfo(){
        println("Title: $mTitleName , Player: $mPlayerName ")
    }
}

继承类别

var mIronmanTitle = ironman("Kotlin Android 30天,从 0 到 ML", "Kevin")
mIronmanTitle.printPlayerInfo()

//继承父类别要加 open
open class ironman constructor(titleName: String, playerName: String){

    var mTitle = titleName
    var mPlayer = playerName
    open fun printPlayerInfo(){
        println("Title: $mTitle , Player: $mPlayer ")
    }
}

//多加一个开赛参数
var mIronPlayer = ironPlayer("Kotlin Android 30天,从 0 到 ML", "Kevin","9/6")
//覆写父类别方法
mIronPlayer.printPlayerInfo()
//子类别方法
mIronPlayer.printironPlayerInfo()


//子类别继承父类别,父类别前面要加 open
//子类别继承父类别,子类别建构式多加参数
//子类别继承父类别,子类别覆写父类别方法
class ironPlayer constructor(titleName: String, 
                             playerName: String,
                             var startDay:String
                             ): ironman(titleName, playerName){

    var mTitleName = super.mTitle
    var mPlayerName = super.mPlayer
    var mStartDay :String = startDay

    override fun printPlayerInfo(){
        println("override Title: $mTitleName , Player: $mPlayerName ")
    }

    fun printironPlayerInfo(){
        println("Title: $mTitleName , 
                Player: $mPlayerName , mStartDay = $mStartDay")
    }
}

执行结果:
https://ithelp.ithome.com.tw/upload/images/20210913/201216435bGbyxFpRU.png

参考:

https://kotlinlang.org/docs/classes.html
https://kotlinlang.org/docs/inheritance.html

<<:  DAY1-凡事起头难

>>:  Day 11 | 嵌套元件(二)

[Day 12] 从 tensorflow.keras 开始的 MobileNet 生活

0. 进度条 模型 进度 VGG Net 完成 ResNet 完成 DensNet 完成 Mobil...

【Day 11】- 还在 PTT 点击已满 18 岁? 带上 cookies 吧!(实战 PTT 爬虫 1/3)

前情提要 前一篇文章带大家看了网路爬虫的种类,下次看到类似的名词时能想到那一类的爬虫的特性。 开始之...

[08] 回声多个 media 讯息

判断多个讯息 主要是多了一个 media_group_id 然後多个 media 会分别 post ...

中阶魔法 - 闭包 Closure (一)

前情提要 「艾草艾草,你在做什麽?」 艾草:「没特别做什麽呀!」 「艾草艾草,我问你喔!」 艾草:「...

[Day26]用SEED来体验漏洞吧

讲完漏洞赛制、实体密室逃脱之後,还有什麽可以实际玩看看漏洞呢? 另外想跟大家分享的是可以实作的靶机:...