Kotlin 基礎教程之類、對象、接口
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 的類沒有靜態(tài)方法, 大多數情況下, 建議使用包級函數(packagelevel function)替代, 或者使用同伴對象,
達到靜態(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 沒有靜態(tài)類, 可以用object實現(xiàn)靜態(tài)類的效果。
object B {
fun foo() {
// do something
}
}
class A {
fun bar() {
B.foo()
}
}
感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!
相關文章
基于SpringBoot實現(xiàn)IP黑白名單的詳細步驟
IP黑白名單是網絡安全管理中常見的策略工具,用于控制網絡訪問權限,根據業(yè)務場景的不同,其應用范圍廣泛,比如比較容易被盜刷的短信接口、文件接口,都需要添加IP黑白名單加以限制,所以本文給大家介紹了基于SpringBoot實現(xiàn)IP黑白名單的詳細步驟,需要的朋友可以參考下2024-01-01
Spring?Boot項目如何優(yōu)雅實現(xiàn)Excel導入與導出功能
在我們平時工作中經常會遇到要操作Excel的功能,比如導出個用戶信息或者訂單信息的Excel報表,下面這篇文章主要給大家介紹了關于Spring?Boot項目中如何優(yōu)雅實現(xiàn)Excel導入與導出功能的相關資料,需要的朋友可以參考下2022-06-06
SpringBoot環(huán)境Druid數據源使用及特點
Druid 是目前比較流行的高性能的,分布式列存儲的OLAP框架(具體來說是MOLAP)。本文給大家分享SpringBoot環(huán)境Druid數據源使用及特點介紹,感興趣的朋友跟隨小編一起看看吧2021-07-07
Spring?Boot項目獲取resources目錄下文件并返回給前端的方案
我們在項目中經常碰到需要讀取固定文件的場景,如模板文件,一般做法是將文件放在resources目錄下,程序通過多種方式可以順利讀取文件,這篇文章主要給大家介紹了關于Spring?Boot項目獲取resources目錄下文件并返回給前端的相關資料,需要的朋友可以參考下2024-07-07
基于Spring Data Jest的Elasticsearch數據統(tǒng)計示例
本篇文章主要介紹了基于Spring Data Jest的Elasticsearch數據統(tǒng)計示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-02-02

