成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Kotlin 接口

cocopeak / 1395人閱讀

摘要:中的接口與類似,但是它允許有默認(rèn)實(shí)現(xiàn)。這一點(diǎn)與有些相近,及以后,允許我們?cè)诮涌谥卸x方法和方法。這與繼承中有多個(gè)相同方法的處理一樣。歡迎加入學(xué)習(xí)交流群,大家一起學(xué)習(xí)交流。

Kotlin 中的接口與Java類似,但是它允許有默認(rèn)實(shí)現(xiàn)。這一點(diǎn)與Java 8有些相近,JDK8及以后,允許我們?cè)诮涌谥卸xstatic方法和default方法。

interface MyInterface {
    fun method1();
    
    fun result():Int
    
    fun doIt(){
        print("do it")
    }
}

接口的實(shí)現(xiàn)

一個(gè)類或者對(duì)象可以實(shí)現(xiàn)一個(gè)或多個(gè)接口。

class DefaultImpl :MyInterface{
        override fun result(): Int {
            return 0;
        }

        override fun method1() {
           print("override method 1")
        }

}

接口中的屬性

接口中的屬性只能是抽象的,不允許初始化值
接口不會(huì)保存屬性值,實(shí)現(xiàn)接口時(shí),必須重寫屬性

interface MyInterface{
    var name:String //name 屬性, 抽象的
}
 
class MyImpl:MyInterface{
    override var name: String = "runoob" //重載屬性
}

Demo

interface MyInterface {
    var name:String //name 屬性, 抽象的
    fun bar()
    fun foo() {
        // 可選的方法體
        println("foo")
    }
}
class Child : MyInterface {
    override var name: String = "runoob" //重寫屬性
    override fun bar() {
        // 方法體
        println("bar")
    }
}
fun main(args: Array) {
    val c =  Child()
    c.foo();
    c.bar();
    println(c.name)
 
}

輸出結(jié)果為:

foo
bar
runoob

函數(shù)重寫

實(shí)現(xiàn)多個(gè)接口時(shí),可能會(huì)遇到同一方法繼承多個(gè)實(shí)現(xiàn)的問(wèn)題。例如:

interface A {
    fun foo() { print("A") }   // 已實(shí)現(xiàn)
    fun bar()                  // 未實(shí)現(xiàn),沒有方法體,是抽象的
}
 
interface B {
    fun foo() { print("B") }   // 已實(shí)現(xiàn)
    fun bar() { print("bar") } // 已實(shí)現(xiàn)
}
 
class C : A {
    override fun bar() { print("bar") }   // 重寫
}
 
class D : A, B {
    override fun foo() {
        super.foo()
        super.foo()
    }
 
    override fun bar() {
        super.bar()
    }
}
 
fun main(args: Array) {
    val d =  D()
    d.foo();
    d.bar();
}

輸出結(jié)果為:

ABbar

C 只實(shí)現(xiàn)了,只需要重寫抽象方法bar().而class D則實(shí)現(xiàn)了A,B,而A,B都有方法
foo(),bar(),所以都需要重寫,用以指定D如何實(shí)現(xiàn)。這與繼承中有多個(gè)相同方法的處理一樣。

歡迎加入學(xué)習(xí)交流群569772982,大家一起學(xué)習(xí)交流。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/70567.html

相關(guān)文章

  • Kotlin + Spring Boot : 下一代 Java 服務(wù)端開發(fā) 》

    摘要:下一代服務(wù)端開發(fā)下一代服務(wù)端開發(fā)第部門快速開始第章快速開始環(huán)境準(zhǔn)備,,快速上手實(shí)現(xiàn)一個(gè)第章企業(yè)級(jí)服務(wù)開發(fā)從到語(yǔ)言的缺點(diǎn)發(fā)展歷程的缺點(diǎn)為什么是產(chǎn)生的背景解決了哪些問(wèn)題為什么是的發(fā)展歷程容器的配置地獄是什么從到下一代企業(yè)級(jí)服務(wù)開發(fā)在移動(dòng)開發(fā)領(lǐng)域 《 Kotlin + Spring Boot : 下一代 Java 服務(wù)端開發(fā) 》 Kotlin + Spring Boot : 下一代 Java...

    springDevBird 評(píng)論0 收藏0
  • Android 開發(fā)學(xué)習(xí) - Kotlin

    摘要:開發(fā)學(xué)習(xí)前言最近版本上線后手上沒有什么工作量就下來(lái)看看,以下為學(xué)習(xí)相關(guān)內(nèi)容。用對(duì)象表達(dá)式和對(duì)象聲明巧妙的實(shí)現(xiàn)了這一概念。在中這就是或者叫類型系統(tǒng)致力與消滅異常。 Android 開發(fā)學(xué)習(xí) - Kotlin 前言 - 最近版本上線后手上沒有什么工作量就下來(lái)看看 Kotlin ,以下為學(xué)習(xí)相關(guān)內(nèi)容 。以下代碼的寫法存在多種,這里只列舉其一 單利 java 單例模式 &...

    jas0n 評(píng)論0 收藏0
  • SpringBoot 2.X Kotlin 系列之Reactive Mongodb 與 JPA

    摘要:一本節(jié)目標(biāo)前兩章主要講了的基本操作,這一章我們將學(xué)習(xí)使用訪問(wèn),并通過(guò)完成簡(jiǎn)單操作。這里有一個(gè)問(wèn)題什么不選用數(shù)據(jù)庫(kù)呢答案是目前支持。突出點(diǎn)是,即非阻塞的。二構(gòu)建項(xiàng)目及配置本章不在講解如何構(gòu)建項(xiàng)目了,大家可以參考第一章。 showImg(https://segmentfault.com/img/remote/1460000018819338?w=1024&h=500); 一、本節(jié)目標(biāo) 前兩...

    MSchumi 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<