摘要:中的接口與類似,但是它允許有默認實現。這一點與有些相近,及以后,允許我們在接口中定義方法和方法。這與繼承中有多個相同方法的處理一樣。歡迎加入學習交流群,大家一起學習交流。
Kotlin 中的接口與Java類似,但是它允許有默認實現。這一點與Java 8有些相近,JDK8及以后,允許我們在接口中定義static方法和default方法。
interface MyInterface { fun method1(); fun result():Int fun doIt(){ print("do it") } }
接口的實現
一個類或者對象可以實現一個或多個接口。
class DefaultImpl :MyInterface{ override fun result(): Int { return 0; } override fun method1() { print("override method 1") } }
接口中的屬性
接口中的屬性只能是抽象的,不允許初始化值
接口不會保存屬性值,實現接口時,必須重寫屬性
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) }
輸出結果為:
foo bar runoob
函數重寫
實現多個接口時,可能會遇到同一方法繼承多個實現的問題。例如:
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.foo() super.foo() } override fun bar() { super.bar() } } fun main(args: Array) { val d = D() d.foo(); d.bar(); }
輸出結果為:
ABbar
C 只實現了,只需要重寫抽象方法bar().而class D則實現了A,B,而A,B都有方法
foo(),bar(),所以都需要重寫,用以指定D如何實現。這與繼承中有多個相同方法的處理一樣。
歡迎加入學習交流群569772982,大家一起學習交流。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/70567.html
摘要:下一代服務端開發下一代服務端開發第部門快速開始第章快速開始環境準備,,快速上手實現一個第章企業級服務開發從到語言的缺點發展歷程的缺點為什么是產生的背景解決了哪些問題為什么是的發展歷程容器的配置地獄是什么從到下一代企業級服務開發在移動開發領域 《 Kotlin + Spring Boot : 下一代 Java 服務端開發 》 Kotlin + Spring Boot : 下一代 Java...
摘要:開發學習前言最近版本上線后手上沒有什么工作量就下來看看,以下為學習相關內容。用對象表達式和對象聲明巧妙的實現了這一概念。在中這就是或者叫類型系統致力與消滅異常。 Android 開發學習 - Kotlin 前言 - 最近版本上線后手上沒有什么工作量就下來看看 Kotlin ,以下為學習相關內容 。以下代碼的寫法存在多種,這里只列舉其一 單利 java 單例模式 &...
摘要:一本節目標前兩章主要講了的基本操作,這一章我們將學習使用訪問,并通過完成簡單操作。這里有一個問題什么不選用數據庫呢答案是目前支持。突出點是,即非阻塞的。二構建項目及配置本章不在講解如何構建項目了,大家可以參考第一章。 showImg(https://segmentfault.com/img/remote/1460000018819338?w=1024&h=500); 一、本節目標 前兩...
閱讀 2774·2021-11-22 15:11
閱讀 3537·2021-09-28 09:43
閱讀 2889·2019-08-30 13:05
閱讀 3431·2019-08-30 11:18
閱讀 1447·2019-08-29 16:34
閱讀 1301·2019-08-29 13:53
閱讀 2908·2019-08-29 11:03
閱讀 1658·2019-08-29 10:57