中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Kotlin 基礎教程之類、對象、接口

發布時間:2020-08-31 11:47:32 來源:腳本之家 閱讀:141 作者:lqh 欄目:編程語言

Kotlin 基礎教程之類、對象、接口

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

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

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

class

構造器

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

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

如果主構造器沒有任何注解(annotation), 也沒有任何可見度修飾符, 那么 constructor 關鍵字可以省略

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

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

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

Kotlin 有一種簡潔語法, 可以通過主構造器來定義屬性并初始化屬性值:

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

如果構造器有注解, 或者有可見度修飾符, 這時 constructor 關鍵字是必須的, 注解和修飾符要放在它之前

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

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

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

類實例化

Kotlin 沒有 new 關鍵字

val persion = Persion("jason")

繼承

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

與Java的Object相對,Kotlin也有一個這樣的Any類,類默認繼承Any。

與Java的final相反,Kotlin類默認是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 的, 抽象類不必標識 open。

abstract class Base {
  abstract fun v()
}

同伴對象

Kotlin 的類沒有靜態方法, 大多數情況下, 建議使用包級函數(packagelevel function)替代, 或者使用同伴對象,
達到靜態方法效果

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 沒有靜態類, 可以用object實現靜態類的效果。

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

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

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

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

曲水县| 潮安县| 通河县| 金坛市| 沾化县| 肃南| 原平市| 台东县| 临武县| 锡林浩特市| 朝阳市| 天柱县| 台中县| 通化县| 桓台县| 泉州市| 通许县| 南召县| 永安市| 乡宁县| 荃湾区| 正安县| 浠水县| 莒南县| 余姚市| 徐汇区| 花莲市| 开江县| 南汇区| 于田县| 清丰县| 措勤县| 仪征市| 元氏县| 横峰县| 旅游| 兴义市| 双城市| 张家界市| 军事| 玉山县|