国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - Kotlin 基礎教程之類、對象、接口

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

2020-11-26 14:24jinkui Java教程

這篇文章主要介紹了Kotlin 基礎教程之類、對象、接口的相關資料,需要的朋友可以參考下

Kotlin 基礎教程之對象接口

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
interface A {
  fun bar()
  fun foo() {
  // 可選方法體
  }
}
 
class Child: A {
  override fun bar() {
    // todo
  }
  override fun foo() {
    super.foo()
  }
}

class

構造器

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

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

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

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

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

?
1
2
3
4
5
6
7
class Persion(name: String) {
  private val firstName: String = name
  private var age: Int
  init {
    age = 10
  }
}

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

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

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

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

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

?
1
2
3
4
5
class Persion(val name: String) {
  constructor(name: String, age: Int): this(name) {
    // todo
  }
}

類實例化

Kotlin 沒有 new 關鍵字

?
1
val persion = Persion("jason")

繼承

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

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

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

?
1
2
3
4
open class Base {
  open fun v() {...}
  fun nv() {...} // can't be override
}

方法和屬性的覆蓋

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

?
1
2
3
class Other: Base() {
  override fun v() {...}
}

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

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

?
1
2
3
4
5
6
7
8
9
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。

?
1
2
3
abstract class Base {
  abstract fun v()
}

同伴對象

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

?
1
2
3
4
5
6
class Foo {
 
companion object {
  fun v() {}
}
}

interface

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

?
1
2
3
4
5
6
7
interface A {
  val x: Int
}
 
class B: A {
  override val x: Int = 10
}

object

Kotlin 沒有靜態類, 可以用object實現靜態類的效果。

?
1
2
3
4
5
6
7
8
9
10
11
object B {
  fun foo() {
    // do something
  }
}
 
class A {
  fun bar() {
   B.foo()
  }
}

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

原文鏈接:http://www.jianshu.com/p/2cd616cc60a5

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 国产精品毛片久久久久久久av | 在线国产精品一区 | 亚洲一级黄色 | 成人高清网站 | 成人av免费观看 | 久久午夜精品 | 午夜免费视频 | 国产欧美自拍 | 久久手机免费视频 | 91cn国产在线 | 亚洲精品视频一区二区三区 | 精品无人区一区二区三区动漫 | 国产在线精品一区 | 欧美日韩一区二区三区在线观看 | 久视频在线观看 | 免费观看一级特黄欧美大片 | 日本久久精品 | 成年免费视频黄网站在线观看 | 天天射天天干 | 成人免费观看视频大全 | 天堂va久久久噜噜噜久久va | 一区二区三区免费在线观看 | 99热热热热| 免费一级特黄3大片视频 | 国产精品国产精品国产专区不片 | av中文字幕第一页 | 99在线精品视频 | 免费一级在线 | 中文字幕亚洲欧美日韩在线不卡 | 中文字幕乱码一区二区三区 | 国产黄色在线播放 | 欧美一级视频在线观看 | 久久久www成人免费无遮挡大片 | 亚洲精品二区三区 | 午夜成人免费视频 | 色婷婷狠狠| 国产成人精品一区二区三区视频 | 免费成人看片 | 国产黄色在线观看 | 亚洲精品第一区在线观看 | 欧美日韩亚洲另类 |