Kotlin學習筆記 類和介面

2021-09-11 13:58:36 字數 2129 閱讀 6605

####一. class

class person 

複製**

abstract //抽象類標示

final //標示類不可繼承,預設屬性 enum //標示類為列舉 open //類可繼承,類預設是final的 annotation //註解類

accessmodifier

private //僅在同乙個檔案中可見 protected //同乙個檔案中或子類可見 public //所有呼叫的地方都可見 internal //同乙個模組中可見

class person 

get() = field.touppercase()

var age: int = 0

}複製**

主構造方法

class person constructor (name: string) 

}複製**

和上面的區別在於 上面的name只是作為引數傳遞,而下面的方式中name直接成為類的成員屬性

class person constructor(val name: string) 

} 複製**

主構造方法的初始化**可以放到init**塊中,如果沒有註解或修飾符則constructor可以省略 2. 二級構造方法

class person 

}複製**

如果類有主構造方法, 那麼每個二級構造方法都必須委託給主構造方法, 要麼直接委託, 要麼通過其他二級構造方法間接委託. 委託到同乙個類的另乙個構造方法時, 使用 this 關鍵字實現

class person(val name: string) 

}複製**

例項化 kotlin中沒有new關鍵字

val p = person("tom")

複製**

abstract class parent 

class children : parent

() }

複製**

class outer 

}}內部類使用inner修飾,持有外部類的引用,可以訪問外部類的屬性和方法

複製**

class outer 

}複製**

巢狀類和內部類的區別在於巢狀類沒有外部類的引用

sealed class expr 

複製**

data class person(var name: string, var age: int, var gender: int)

複製**

object singleton 

}fun main(args: array)

複製**

####二.inte***ce

inte***ce myinte***ce 

}複製**

class myclass :myinte***ce

override fun bar

() }

複製**

inte***ce myinte***ce 

//實現方式一

class myclass(override var name: string) : myinte***ce

//實現方式二

class myclass : myinte***ce

}複製**

inte***ce a 

fun bar

() }

inte***ce b

fun bar

() }

class c : a, b

override fun bar

() }

複製**

Kotlin學習4 5 抽象類和介面

在定義乙個類時,通常需要定義一些方法來描述該類的行為特徵,但有時這些方法的實現方式是無法確定的。因此,可以將其定義為抽象方法,抽象方法使用關鍵字 abstract 修飾,該方法沒有方法體,在使用時需要實現其方法體,當乙個類中包含了抽象方法,該類必須使用關鍵字abstract 定義為抽象類。語法格式如...

Kotlin學習筆記(三) Kotlin密封類

前言 密封類,可以理解為列舉,規定了有限個型別,不可以存在其他型別,但列舉每個列舉常量只存在乙個示例,但是密封類的子類可以有多個示例,所以可以將密封類看做是列舉的拓展,基於列舉,高於列舉,青出於藍而勝於藍。正文密封類和普通類的區別,在於密封類使用了sealed修飾符,雖然密封類也可以有子類,但是所有...

Kotlin抽象類和介面

一 首先了解一下物件導向的基本概念 1.本質上就是解決如何用程式描述世界的問題 2.討論如何把實際存在的東西對映成程式的類和物件 3.一種程式設計的思路 思想 方法 4.程式設計層面的概念 5.設計模式 前人的程式設計經驗 6.乙個類可以單繼承 類 多實現 介面 二 下面來看乙個例子 package...