欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Kotlin 基礎(chǔ)教程之類、對(duì)象、接口

 更新時(shí)間:2017年06月30日 10:49:35   投稿:lqh  
這篇文章主要介紹了Kotlin 基礎(chǔ)教程之類、對(duì)象、接口的相關(guān)資料,需要的朋友可以參考下

Kotlin 基礎(chǔ)教程之類、對(duì)象、接口

Kotlin中類、接口相關(guān)概念與Java一樣,包括類名、屬性、方法、繼承等,如下示例:

interface A {
  fun bar()
  fun foo() {
  // 可選方法體
  }
}

class Child: A {
  override fun bar() {
    // todo
  }
  override fun foo() {
    super.foo()
  }
}

class

構(gòu)造器

Kotlin 中的類可以有一個(gè) 主構(gòu)造器, 以及一個(gè)或多個(gè)次構(gòu)造器, 主構(gòu)造器是類頭部的一部分, 位于類名稱之后。

class Person constructor(name: String) {...}

如果主構(gòu)造器沒(méi)有任何注解(annotation), 也沒(méi)有任何可見(jiàn)度修飾符, 那么 constructor 關(guān)鍵字可以省略

class Person(name: String) {...}

主構(gòu)造器中不能包含任何代碼. 初始化代碼可以放在初始化代碼段 (initializer block) 中

class Persion(name: String) {
  private val firstName: String = name
  private var age: Int
  init {
    age = 10
  }
}

Kotlin 有一種簡(jiǎn)潔語(yǔ)法, 可以通過(guò)主構(gòu)造器來(lái)定義屬性并初始化屬性值:

class Persion(val name: String, var age: Int) {...}

如果構(gòu)造器有注解, 或者有可見(jiàn)度修飾符, 這時(shí) constructor 關(guān)鍵字是必須的, 注解和修飾符要放在它之前

class Persion public @Inject constructor(val name: String) {...}

類還可以聲明次級(jí)構(gòu)造器 (secondary constructor)。如果類有主構(gòu)造器, 那么次級(jí)構(gòu)造器都必須委托給主構(gòu)造器

class Persion(val name: String) {
  constructor(name: String, age: Int): this(name) {
    // todo
  }
}

類實(shí)例化

Kotlin 沒(méi)有 new 關(guān)鍵字

val persion = Persion("jason")

繼承

Kotlin的繼承概念和Java一樣,”類名: 超類“ 冒號(hào)表示繼承。

與Java的Object相對(duì),Kotlin也有一個(gè)這樣的Any類,類默認(rèn)繼承Any。

與Java的final相反,Kotlin類默認(rèn)是final的,允許被繼承的類,需要加 open 修飾。

open class Base {
  open fun v() {...}
  fun nv() {...} // can't be override
}

方法和屬性的覆蓋

方法的覆蓋和Java類似,但是只有 open 的方法才能 override, final 類是不允許定義 open方法。

class Other: Base() {
  override fun v() {...}
}

可以加final禁止ovrride, final override fun v() {...}

與方法的覆蓋類似, Kotlin提供了屬性的覆蓋,例如

open class Foo {
  open val x: Int = 0
}

class Bar(override val x: Int): Foo {...}

class Bar1: Foo() {
  override var x: Int = 0 // override to var
}

抽象類

類本身, 或類中的部分成員, 都可以聲明為 abstract 的, 抽象類不必標(biāo)識(shí) open。

abstract class Base {
  abstract fun v()
}

同伴對(duì)象

Kotlin 的類沒(méi)有靜態(tài)方法, 大多數(shù)情況下, 建議使用包級(jí)函數(shù)(packagelevel function)替代, 或者使用同伴對(duì)象,
達(dá)到靜態(tài)方法效果

class Foo {

companion object {
  fun v() {}
}
}

interface

Kotlin 的接口和Java差不多,但是接口的屬性不一樣,Kotlin接口中的屬性是抽象的。

interface A {
  val x: Int
}

class B: A {
  override val x: Int = 10
}

object

Kotlin 沒(méi)有靜態(tài)類, 可以用object實(shí)現(xiàn)靜態(tài)類的效果。

object B {
  fun foo() {
    // do something
  }
}

class A {
  fun bar() {
   B.foo()
  }
}

感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!

相關(guān)文章

  • 基于SpringBoot實(shí)現(xiàn)IP黑白名單的詳細(xì)步驟

    基于SpringBoot實(shí)現(xiàn)IP黑白名單的詳細(xì)步驟

    IP黑白名單是網(wǎng)絡(luò)安全管理中常見(jiàn)的策略工具,用于控制網(wǎng)絡(luò)訪問(wèn)權(quán)限,根據(jù)業(yè)務(wù)場(chǎng)景的不同,其應(yīng)用范圍廣泛,比如比較容易被盜刷的短信接口、文件接口,都需要添加IP黑白名單加以限制,所以本文給大家介紹了基于SpringBoot實(shí)現(xiàn)IP黑白名單的詳細(xì)步驟,需要的朋友可以參考下
    2024-01-01
  • Java數(shù)據(jù)結(jié)構(gòu)之二叉排序樹(shù)的實(shí)現(xiàn)

    Java數(shù)據(jù)結(jié)構(gòu)之二叉排序樹(shù)的實(shí)現(xiàn)

    二叉排序樹(shù)(Binary Sort Tree),又稱二叉查找樹(shù)(Binary Search Tree),亦稱二叉搜索樹(shù)。本文詳細(xì)介紹了二叉排序樹(shù)的原理,并且提供了Java代碼的完全實(shí)現(xiàn)。需要的可以參考一下
    2022-01-01
  • Spring?Boot項(xiàng)目如何優(yōu)雅實(shí)現(xiàn)Excel導(dǎo)入與導(dǎo)出功能

    Spring?Boot項(xiàng)目如何優(yōu)雅實(shí)現(xiàn)Excel導(dǎo)入與導(dǎo)出功能

    在我們平時(shí)工作中經(jīng)常會(huì)遇到要操作Excel的功能,比如導(dǎo)出個(gè)用戶信息或者訂單信息的Excel報(bào)表,下面這篇文章主要給大家介紹了關(guān)于Spring?Boot項(xiàng)目中如何優(yōu)雅實(shí)現(xiàn)Excel導(dǎo)入與導(dǎo)出功能的相關(guān)資料,需要的朋友可以參考下
    2022-06-06
  • Java判斷用戶名和密碼是否符合要求過(guò)程詳解

    Java判斷用戶名和密碼是否符合要求過(guò)程詳解

    這篇文章主要介紹了Java判斷用戶名和密碼過(guò)程詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-02-02
  • Kotlin 基礎(chǔ)教程之反射

    Kotlin 基礎(chǔ)教程之反射

    這篇文章主要介紹了Kotlin 基礎(chǔ)教程之反射的相關(guān)資料,需要的朋友可以參考下
    2017-06-06
  • Java程序命令行參數(shù)用法總結(jié)

    Java程序命令行參數(shù)用法總結(jié)

    這篇文章主要介紹了Java程序命令行參數(shù)用法總結(jié),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • intellij idea旗艦版解決學(xué)生無(wú)法注冊(cè)問(wèn)題詳解

    intellij idea旗艦版解決學(xué)生無(wú)法注冊(cè)問(wèn)題詳解

    這篇文章主要介紹了intellij idea旗艦版解決學(xué)生無(wú)法注冊(cè)問(wèn)題詳解,文中通過(guò)圖文示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • SpringBoot環(huán)境Druid數(shù)據(jù)源使用及特點(diǎn)

    SpringBoot環(huán)境Druid數(shù)據(jù)源使用及特點(diǎn)

    Druid 是目前比較流行的高性能的,分布式列存儲(chǔ)的OLAP框架(具體來(lái)說(shuō)是MOLAP)。本文給大家分享SpringBoot環(huán)境Druid數(shù)據(jù)源使用及特點(diǎn)介紹,感興趣的朋友跟隨小編一起看看吧
    2021-07-07
  • Spring?Boot項(xiàng)目獲取resources目錄下文件并返回給前端的方案

    Spring?Boot項(xiàng)目獲取resources目錄下文件并返回給前端的方案

    我們?cè)陧?xiàng)目中經(jīng)常碰到需要讀取固定文件的場(chǎng)景,如模板文件,一般做法是將文件放在resources目錄下,程序通過(guò)多種方式可以順利讀取文件,這篇文章主要給大家介紹了關(guān)于Spring?Boot項(xiàng)目獲取resources目錄下文件并返回給前端的相關(guān)資料,需要的朋友可以參考下
    2024-07-07
  • 基于Spring Data Jest的Elasticsearch數(shù)據(jù)統(tǒng)計(jì)示例

    基于Spring Data Jest的Elasticsearch數(shù)據(jù)統(tǒng)計(jì)示例

    本篇文章主要介紹了基于Spring Data Jest的Elasticsearch數(shù)據(jù)統(tǒng)計(jì)示例,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-02-02

最新評(píng)論