Kotlin類與對象篇(3)--接口


歡迎關注 二師兄Kotlin
轉(zhuǎn)載請注明出處 二師兄kotlin


Kotlin 的接口很像 java 8梳码。它們都可以包含抽象方法惨缆,以及方法的實現(xiàn)。和抽象類不同的是势告,接口不能保存狀態(tài)岸啡≡#可以有屬性但必須是抽象的赫编,或者提供訪問器的實現(xiàn)巡蘸。

接口用關鍵字 interface 來定義:

interface MyInterface {
    fun bar()
    fun foo() {
      // optional body
    }
}

實現(xiàn)接口

一個類或?qū)ο罂梢詫崿F(xiàn)一個或多個接口

class Child : MyInterface {
    override fun bar() {
        // body
    }
}

接口中的屬性

可以在接口中申明屬性。接口中的屬性要么是抽象的擂送,要么提供訪問器的實現(xiàn)悦荒。接口屬性不可以擁有隱藏域(backing field),因此訪問器不可以引用它們嘹吨。

interface MyInterface {
    val prop: Int // abstract

    val propertyWithImplementation: String
        get() = "foo"

    fun foo() {
        print(prop)
    }
}

class Child : MyInterface {
    override val prop: Int = 29
}

解決重寫沖突

當我們在父類中聲明了許多類型搬味,有可能出現(xiàn)一個方法的多種實現(xiàn)。比如:

interface A {
    fun foo() { print("A") }
    fun bar()
}

interface B {
    fun foo() { print("B") }
    fun bar() { print("bar") }
}

class C : A {
    override fun bar() { print("bar") }
}

class D : A, B {
    override fun foo() {
        super<A>.foo()
        super<B>.foo()
    }

    override fun bar() {
        super<B>.bar()
    }
}

A B 接口都有聲明了 foo() 和 bar() 函數(shù)。它們都實現(xiàn)了 foo() 方法碰纬,但只有 B 實現(xiàn)了 bar() ,bar() 在 A 中并沒有聲明它是抽象的萍聊,這是因為在接口中如果函數(shù)沒有函數(shù)體,那么默認是抽像的悦析。

不過寿桨,如果我們從 A 中派生一個 C 實體類,顯然我們需要重寫 bar() 强戴,并實現(xiàn)它亭螟。而我們從 A 和 B 派生一個 D ,我們不用重寫 bar() 方法骑歹,因為我們的一個繼承中有一個已經(jīng)實現(xiàn)了它预烙。但我們繼承了兩個 foo() 的實現(xiàn),因此編譯器不知道應該選哪個道媚,并強制我們重寫 foo() 并且明確指出我們想怎么實現(xiàn)扁掸。

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市最域,隨后出現(xiàn)的幾起案子也糊,更是在濱河造成了極大的恐慌,老刑警劉巖羡宙,帶你破解...
    沈念sama閱讀 222,946評論 6 518
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件狸剃,死亡現(xiàn)場離奇詭異,居然都是意外死亡狗热,警方通過查閱死者的電腦和手機钞馁,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,336評論 3 399
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來匿刮,“玉大人僧凰,你說我怎么就攤上這事∈焱瑁” “怎么了训措?”我有些...
    開封第一講書人閱讀 169,716評論 0 364
  • 文/不壞的土叔 我叫張陵,是天一觀的道長光羞。 經(jīng)常有香客問我绩鸣,道長,這世上最難降的妖魔是什么纱兑? 我笑而不...
    開封第一講書人閱讀 60,222評論 1 300
  • 正文 為了忘掉前任呀闻,我火速辦了婚禮,結果婚禮上潜慎,老公的妹妹穿的比我還像新娘捡多。我一直安慰自己蓖康,他們只是感情好,可當我...
    茶點故事閱讀 69,223評論 6 398
  • 文/花漫 我一把揭開白布垒手。 她就那樣靜靜地躺著蒜焊,像睡著了一般。 火紅的嫁衣襯著肌膚如雪科贬。 梳的紋絲不亂的頭發(fā)上山涡,一...
    開封第一講書人閱讀 52,807評論 1 314
  • 那天,我揣著相機與錄音唆迁,去河邊找鬼鸭丛。 笑死,一個胖子當著我的面吹牛唐责,可吹牛的內(nèi)容都是我干的鳞溉。 我是一名探鬼主播,決...
    沈念sama閱讀 41,235評論 3 424
  • 文/蒼蘭香墨 我猛地睜開眼鼠哥,長吁一口氣:“原來是場噩夢啊……” “哼熟菲!你這毒婦竟也來了?” 一聲冷哼從身側響起朴恳,我...
    開封第一講書人閱讀 40,189評論 0 277
  • 序言:老撾萬榮一對情侶失蹤抄罕,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后于颖,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體呆贿,經(jīng)...
    沈念sama閱讀 46,712評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,775評論 3 343
  • 正文 我和宋清朗相戀三年森渐,在試婚紗的時候發(fā)現(xiàn)自己被綠了做入。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,926評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡同衣,死狀恐怖竟块,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情耐齐,我是刑警寧澤浪秘,帶...
    沈念sama閱讀 36,580評論 5 351
  • 正文 年R本政府宣布,位于F島的核電站埠况,受9級特大地震影響耸携,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜询枚,卻給世界環(huán)境...
    茶點故事閱讀 42,259評論 3 336
  • 文/蒙蒙 一违帆、第九天 我趴在偏房一處隱蔽的房頂上張望浙巫。 院中可真熱鬧金蜀,春花似錦刷后、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,750評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至护桦,卻和暖如春含衔,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背二庵。 一陣腳步聲響...
    開封第一講書人閱讀 33,867評論 1 274
  • 我被黑心中介騙來泰國打工贪染, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人催享。 一個月前我還...
    沈念sama閱讀 49,368評論 3 379
  • 正文 我出身青樓杭隙,卻偏偏與公主長得像,于是被迫代替她去往敵國和親因妙。 傳聞我的和親對象是個殘疾皇子痰憎,可洞房花燭夜當晚...
    茶點故事閱讀 45,930評論 2 361

推薦閱讀更多精彩內(nèi)容