類
Kotlin 中使用 關(guān)鍵字 Class 聲明類
class Invoice{
...
}
//如果類沒(méi)有內(nèi)容,可以省略 {}
class Invoice
構(gòu)造函數(shù)
Kotlin 中類可以有主構(gòu)造函數(shù) 和 次構(gòu)造函數(shù)
class Person constructor(firstName :String){
...
}
//如果主構(gòu)造函數(shù)沒(méi)有任何注釋和可見(jiàn)性修飾符 ,則可以省略 **constructor**關(guān)鍵字
class Person(firstName :String){
...
}
主構(gòu)造函數(shù)不能有任何代碼塊,初始化代碼可以放在以 init為關(guān)鍵字的初始化塊中
//與常規(guī)屬性相同,constructor中聲明的屬性可以是 val (只讀)和 var (可變的)
class Person( var firstName :String){
init{
firstName = "vincent"
}
}
次構(gòu)造函數(shù)
class Personal(var firstName : String){
//初始化代碼塊
//所有init代碼塊中的代碼都在次構(gòu)造函數(shù)之前執(zhí)行
init {
firstName = "vincnet"
}
//次構(gòu)造函數(shù) ,
constructor( firstName: String , parent: Parent) : this(firstName){
}
}
可見(jiàn)性修飾符
- public (默認(rèn)為public)
- private (私人的)
- protected (private + 可以在子類中被看到)
- internal (模塊內(nèi)可見(jiàn))
繼承 -> 要么為繼承而設(shè)計(jì),并提供文檔說(shuō)明,要么就禁止繼承。
//父類使用open 或者 abstract 修飾
open class Base{
open fun v(){
...
}
}
//子類使用 : Base()進(jìn)行繼承
class Gss : Base(){
override fun v() {
super.v()
}
}
對(duì)象表達(dá)式和對(duì)象聲明
對(duì)象表達(dá)式
// 比如使用一個(gè)匿名內(nèi)部類
btn_login.setOnClickListener(object:View.OnClickListener{
override fun onClick(p0: View?) {
}
})
//如果只有一個(gè)方法對(duì)象 ,繼續(xù)簡(jiǎn)化
btn_login.setOnClickListener {
...
}
單例 -> 用 object 修飾類名即可
伴生對(duì)象 ->
與java 中的靜態(tài)方法用法一樣 ,(官方推薦使用包級(jí)函數(shù))伴生用 companion 關(guān)鍵字標(biāo)記
class Sample{
companion object Util{
fun sum(a: Int, b:Int ) = a + b
}
}
// 也可以省略伴生對(duì)象的名稱 ,在這種情況下將使用名稱 Companion:
class Sample{
companion object {
fun sum(a: Int, b:Int ) = a + b
}
}