Kotlin學(xué)習(xí)筆記(7)- 接口

系列文章全部為本人的學(xué)習(xí)筆記,若有任何不妥之處,隨時歡迎拍磚指正阐虚。如果你覺得我的文章對你有用,歡迎關(guān)注我蚌卤,我們一起學(xué)習(xí)進步实束!
Kotlin學(xué)習(xí)筆記(1)- 環(huán)境配置
Kotlin學(xué)習(xí)筆記(2)- 空安全
Kotlin學(xué)習(xí)筆記(3)- 語法
Kotlin學(xué)習(xí)筆記(4)- 流程控制
Kotlin學(xué)習(xí)筆記(5)- 類
Kotlin學(xué)習(xí)筆記(6)- 屬性
Kotlin學(xué)習(xí)筆記(7)- 接口
Kotlin學(xué)習(xí)筆記(8)- 擴展
Kotlin學(xué)習(xí)筆記(8)- 擴展(續(xù))
Kotlin學(xué)習(xí)筆記(9)- 數(shù)據(jù)類
Kotlin學(xué)習(xí)筆記(10)- 泛型
Kotlin學(xué)習(xí)筆記(11)- 內(nèi)部類和嵌套類
Kotlin學(xué)習(xí)筆記(12)- 委托
Kotlin學(xué)習(xí)筆記(13)- 函數(shù)式編程
Kotlin學(xué)習(xí)筆記(14)- lambda

一奥秆、接口定義

和java一樣,kotlin中的接口也是使用interface關(guān)鍵字咸灿。

interface Wing{
    fun fly() 
}

和java不同的是构订,接口的實現(xiàn)不是使用implement關(guān)鍵字,而是冒號:避矢,和繼承一樣鲫咽。所以我認為kotlin中的接口是一種特殊的抽象類。

class InterfaceLesson : Wing{
    override fun fly() {
    }
}

二谷异、方法和屬性

kotlin中的接口可以有方法和屬性分尸,java中也是,我們來說說他們的不同歹嘹。

  1. java中的屬性必須初始化箩绍,而且是靜態(tài)常量。kotlin中的屬性默認為abstract尺上,在接口中不能初始化材蛛,必須在實現(xiàn)類中進行初始化,并且在初始化時要加override修飾怎抛。

    interface Wing{
        var count : Int
    }
    
  2. java中的方法必須為抽象卑吭,需要在實現(xiàn)類中進行實現(xiàn)。kotlin中的方法可以為抽象马绝,也可以有實現(xiàn)豆赏,實現(xiàn)了的方法在具體類中可以不用覆寫。(所以更加讓我覺得這就是一種特殊的抽象類)

    interface Wing{
        fun fly() {
            Log.d("text", "Wing -> fly") // 這里實現(xiàn)了接口的方法
        }
    }
    class InterfaceLesson : Wing{
        fun test(){
            fly()            //  在具體類中可以不用覆寫接口中的實現(xiàn)方法富稻,直接調(diào)用
        }
    }
    // 輸出
    Wing -> fly
    

三掷邦、繼承

和java一樣,接口可以繼承接口椭赋,類可以實現(xiàn)多個接口抚岗。

有的文章提到kotlin中的接口可以繼承open類,但是現(xiàn)在的版本已經(jīng)不行了哪怔,接口只能繼承接口

四宣蔚、多繼承重載

我們上面已經(jīng)說過,kotlin中接口的方法可以實現(xiàn)认境,并且如果已經(jīng)在接口中實現(xiàn)胚委,子類中可以不實現(xiàn)。接下來說一些特殊情況:如果子類實現(xiàn)了多個接口元暴,而這些接口中有同名方法的處理篷扩。這個在《Kotlin學(xué)習(xí)筆記(5)- 類》中有所提及兄猩,這里多說一些茉盏。

  1. 如果接口實現(xiàn)了方法鉴未,子類中可以進行覆寫,同時也可以調(diào)用super方法調(diào)用接口的實現(xiàn)

    interface Wing{
        fun fly() {
            Log.d("text", "Wing -> fly")
        }
    }
    open class InterfaceLesson : Wing{
        override fun fly() {
            super.fly()
        }
    }
    
  2. 如果接口沒實現(xiàn)方法鸠姨,子類必須進行實現(xiàn)铜秆,且不能調(diào)用super

    interface Wing{
        fun fly() 
    }
    class InterfaceLesson : Wing{
        override fun fly() {
        }
    }
    
  3. 如果多個接口有相同的方法,無論接口中是否實現(xiàn)讶迁,子類都必須實現(xiàn)該方法连茧。其中,如果兩個接口中都沒有實現(xiàn)巍糯,則子類不能使用super關(guān)鍵字

    interface Foot{
        fun run() 
    }
    
    interface Car{
        fun run() 
    }
    
    class InterfaceLesson : Foot, Car{
        override fun run() {
        }
    }
    

    如果有一個類有實現(xiàn)啸驯,則子類可以使用super關(guān)鍵字,且自動調(diào)用實現(xiàn)的方法祟峦。

    interface Foot{
        fun run()
    }
    
    interface Car{
        fun run() {
            Log.d("text", "Car -> run1")
        }
    }
    
    class InterfaceLesson : Foot, Car{
        override fun run() {
            super.run()
        }
    }
    
    // 輸出
    Car -> run1
    

    如果兩個接口都實現(xiàn)了該方法罚斗,則子類在調(diào)用super的時候需要使用尖括號對調(diào)用的父方法進行聲明。

    interface Foot{
        fun run() {
            Log.d("text", "Foot -> run")
        }
    }
    
    interface Car{
        fun run() {
            Log.d("text", "Car -> run1")
        }
    }
    
    class InterfaceLesson : Foot, Car{
        override fun run() {
            super<Foot>.run()
        }
    }
    
    // 輸出
    Foot -> run
    
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末宅楞,一起剝皮案震驚了整個濱河市针姿,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌厌衙,老刑警劉巖距淫,帶你破解...
    沈念sama閱讀 216,997評論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異婶希,居然都是意外死亡榕暇,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,603評論 3 392
  • 文/潘曉璐 我一進店門喻杈,熙熙樓的掌柜王于貴愁眉苦臉地迎上來拐揭,“玉大人,你說我怎么就攤上這事奕塑√梦郏” “怎么了?”我有些...
    開封第一講書人閱讀 163,359評論 0 353
  • 文/不壞的土叔 我叫張陵龄砰,是天一觀的道長盟猖。 經(jīng)常有香客問我,道長换棚,這世上最難降的妖魔是什么式镐? 我笑而不...
    開封第一講書人閱讀 58,309評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮固蚤,結(jié)果婚禮上娘汞,老公的妹妹穿的比我還像新娘。我一直安慰自己夕玩,他們只是感情好你弦,可當我...
    茶點故事閱讀 67,346評論 6 390
  • 文/花漫 我一把揭開白布惊豺。 她就那樣靜靜地躺著,像睡著了一般禽作。 火紅的嫁衣襯著肌膚如雪尸昧。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,258評論 1 300
  • 那天旷偿,我揣著相機與錄音烹俗,去河邊找鬼。 笑死萍程,一個胖子當著我的面吹牛幢妄,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播茫负,決...
    沈念sama閱讀 40,122評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼磁浇,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了朽褪?” 一聲冷哼從身側(cè)響起置吓,我...
    開封第一講書人閱讀 38,970評論 0 275
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎缔赠,沒想到半個月后衍锚,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,403評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡嗤堰,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,596評論 3 334
  • 正文 我和宋清朗相戀三年戴质,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片踢匣。...
    茶點故事閱讀 39,769評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡告匠,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出离唬,到底是詐尸還是另有隱情后专,我是刑警寧澤,帶...
    沈念sama閱讀 35,464評論 5 344
  • 正文 年R本政府宣布输莺,位于F島的核電站戚哎,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏嫂用。R本人自食惡果不足惜型凳,卻給世界環(huán)境...
    茶點故事閱讀 41,075評論 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望嘱函。 院中可真熱鬧甘畅,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,705評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至荸实,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間缴淋,已是汗流浹背准给。 一陣腳步聲響...
    開封第一講書人閱讀 32,848評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留重抖,地道東北人露氮。 一個月前我還...
    沈念sama閱讀 47,831評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像钟沛,于是被迫代替她去往敵國和親畔规。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,678評論 2 354

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

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,091評論 25 707
  • Google在今年的IO大會上宣布恨统,將Android開發(fā)的官方語言更換為Kotlin叁扫,作為跟著Google玩兒An...
    藍灰_q閱讀 76,859評論 31 489
  • 不重要的廢話 前段時間看了一遍《Programming Kotlin》,主要目的是想提高自己的英文閱讀能力畜埋,能力提...
    珞澤珈群閱讀 3,359評論 1 7
  • 前言 人生苦多莫绣,快來 Kotlin ,快速學(xué)習(xí)Kotlin悠鞍! 什么是Kotlin对室? Kotlin 是種靜態(tài)類型編程...
    任半生囂狂閱讀 26,201評論 9 118
  • 雨水驚醒喧囂 黑云陰抑著遠天的鴿哨 伸出窗外的潮濕的枝丫 慢慢變小 陰天已去 晴日未至 樹葉倒映著灼燒的光影 現(xiàn)在...
    柳晴閱讀 257評論 0 0