摘要:中的接口與類似,但是它允許有默認(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
摘要:下一代服務(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...
摘要:開發(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 單例模式 &...
摘要:一本節(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) 前兩...
閱讀 2832·2021-11-22 15:11
閱讀 3555·2021-09-28 09:43
閱讀 2899·2019-08-30 13:05
閱讀 3442·2019-08-30 11:18
閱讀 1455·2019-08-29 16:34
閱讀 1313·2019-08-29 13:53
閱讀 2919·2019-08-29 11:03
閱讀 1669·2019-08-29 10:57