和Java一樣,任何一個(gè)類最多只能繼承一個(gè)父類零抬,但是卻可以實(shí)現(xiàn)任意多個(gè)接口季春。
1.簡單使用
首先我們創(chuàng)建一個(gè)接口
interface Study {
fun readBook()
fun doHomeWork()
}
讓Student類繼承它
class Student(name: String, age: Int) : Person(name, age), Study {
override fun readBook() {
println(name + " is reading")
}
override fun doHomeWork() {
println(name + " is doing homeWork")
}
}
在Java中繼承使用的關(guān)鍵字是extends蜻牢,實(shí)現(xiàn)接口是用的是implements狭郑,而在Kotlin中統(tǒng)一使用 : 關(guān)鍵字,中間用逗號分隔铸题。另外接口的后面不需要加括號铡恕,因?yàn)樗麤]有構(gòu)造函數(shù)可以去調(diào)用。
2.額外功能
為了使用更加靈活丢间,Kotlin增加了一個(gè)額外的功能:允許接口中定義的函數(shù)進(jìn)行默認(rèn)實(shí)現(xiàn)探熔。
interface Study {
fun readBook()
fun doHomeWork(){
println("我是默認(rèn)實(shí)現(xiàn)")
}
}
如果接口中的一個(gè)函數(shù)擁有了函數(shù)體,這個(gè)函數(shù)體中的內(nèi)容就是它的默認(rèn)實(shí)現(xiàn)烘挫。
我們給doHomeWork增加了函數(shù)體诀艰,那么現(xiàn)在當(dāng)一個(gè)類去繼承Study接口時(shí),只會(huì)強(qiáng)制要求實(shí)現(xiàn)readBook()函數(shù)饮六,而doHomeWork則可以自由選擇實(shí)現(xiàn)或不實(shí)現(xiàn)其垄,不實(shí)現(xiàn)時(shí)就會(huì)使用默認(rèn)的實(shí)現(xiàn)邏輯。