口碑好的揚(yáng)州網(wǎng)站建設(shè)指數(shù)是什么
【2024最新版Kotlin教程】Kotlin第一行代碼系列第五課-類繼承,抽象類,接口
為什么要有繼承呢,現(xiàn)實(shí)中也是有繼承的,對(duì)吧,你繼承你爸的遺產(chǎn),比如你爸建好了一個(gè)房子,兒子繼承爸,就得了一個(gè)房子,當(dāng)然你還可以再建一個(gè)房子(新增方法),當(dāng)然如果你爸允許你拆他房子(加open),你也可以拆掉他的,重建(重寫方法)。
繼承抽象類和接口同一用 “:”
一、類繼承:
//父類,
//有open修飾:允許其他類繼承
/*** 注意: 默認(rèn)無open修飾:不允許其他類繼承*/open class Parent {//父類中的一個(gè)方法//有open修飾:允許子類重寫//無open修飾:不允許子類重寫open fun action(){println("Parent action----------")}
}
//Child類繼承自Parent類
class Child : Parent() {//子類重寫了父類的action方法override fun action(){println("Child action----------")}
}fun main() {}
二、抽象類定義:
/*** 抽象類:定義在class前加abstract* 類是個(gè)模型了吧,就比如動(dòng)物,有些是飛的,有些是走路的,有些是潛水的。* 就是把如何行走這個(gè)行為的再抽象出來,讓它生成對(duì)象時(shí)自己決定(自己實(shí)現(xiàn))** 注意:抽象類沒法自己生成對(duì)象,它需要有子類* // 看了這個(gè)抽象類,我們來看下它的子類InheritDemo** BaseActivity*/
abstract class AbstractDemo(val name:String,var age:Int) {var sex:Int = 1fun eat(){println("我要吃東西")}//定義一個(gè)走抽象方法abstract fun walk()
}
三、接口的定義:
/*** 定義一個(gè)接口:關(guān)鍵字interface 不用加class** 注意:往往有些人分不清抽象類和接口的使用場(chǎng)景,感覺接口能做的,抽象類也能做,* 為什么還要接口呢。* 接口更像方法的抽象,它不歸屬于具體的類。它可以給沒有任何聯(lián)系的類* 如在Android開發(fā)中的OnClickListener接口,它可以給TextView,也可以給ImageView** 選學(xué):因?yàn)橛辛烁唠A函數(shù),高階很大程度可以代替接口*/
interface InterfaceDemo {//沒有實(shí)現(xiàn)的方法fun action()//實(shí)現(xiàn)了方法fun action2(){println("我是action2。")}
}
四、繼承抽象類和接口:
/*** 繼承了抽象類AbstractDemo和接口InterfaceDemo* 注意:子類的構(gòu)造函數(shù)就不能加var或者val了,你父加了*/
class InheritDemo( name1:String, age:Int) : AbstractDemo(name1, age),InterfaceDemo {//實(shí)現(xiàn)了抽象類中的抽象方法override fun walk() {println("我來自抽象類中的抽象方法")}//實(shí)現(xiàn)了接口中的方法override fun action() {println("我來自接口中的action方法")}//重寫了接口中的方法override fun action2() {super.action2()println("我來自接口中的實(shí)現(xiàn)的方法")}
}
有興趣的也可以看視頻教程:
【2024最新版Kotlin教程】Kotlin第一行代碼系列第五課-類繼承,抽象類,接口
整個(gè)kotlin教程源碼項(xiàng)目結(jié)構(gòu)圖:
有問題或者需要整個(gè)源碼學(xué)習(xí)的私信我