美文网首页
kotlin属性与字段

kotlin属性与字段

作者: 覆水无言 | 来源:发表于2019-05-30 18:20 被阅读0次

一:声明属性

kotlin类中属性可以使用关键字var也可以使用val,使用一个属性只需要在类实例后引用即可

class B(var name:String, val age:Int){}
fun main(){
  var b = B()
  b.name
  b.age
}

二:getter和setter

声明一个属性的完整语法
var <propertyName> [: <propertyType] [= <property_initializer>]
[<getter>]
[<setter>]
其中初始化器(initializer)、getter、setter都是可选的,属性类型如果可以从初始化器或者getter返回值中推断
出来也可以省略。
我们可以为属性自定义访问器get,每次访问该属性就会调用该get函数

val isEmpty : Boolean
    get() = this.size ==0
val isEmpty get() =this.size == 0   //isEmpth的类型由get的返回值类型自动判断

如果我们自定义了set,那么每次给属性赋值都会调用它

var name: String
    get() = this.toString
    set(value) {
        show(value)    //setter参数的默认函数一般是value,但如果你喜欢可以使用别的名字。这里一般做些别的操作
        field = value
    }

幕后字段

上个例子中最后只有实现了field=value才能被正确赋值,那么field是什么呢? 在kotlin中我们不能直接声明一个字段,当我们需要一个字段的时候kotlin会为我们自动提供,我们称之为幕后字段,幕后字段一般使用field标识符在访问器中使用,field只能使用在属性访问器中。

三:编译器常量

已知值的属性可以使用const修饰符标记为编译器常量,这些属性满足一下要求

  • 位于顶层或者是object声明,或companion object的一个成员
  • 以String或者原生类型初始化
  • 没有自定的getter

四:延迟初始化属性与变量

一般属性声明非空类型必须在构造函数中初始化,但是有时候我们并不想在类实例化时对变量进行初始化,这时我们需要使用kotlin修饰符lateinit来对属性进行延迟声明,这个修饰符其实就显式告诉编译器,这里不需要进行变量未初始化检查,后期需要程序员自行初始化。lateinit只能修饰object类型,无法修饰基础类型

lateinit var p: Person

isInitialized:可以检查变量是否已经初始化

相关文章

  • Kotlin学习手册(八)内联函数let、with、run、ap

    Kotlin系列导读 Kotlin学习手册(一)类与继承Kotlin学习手册(二)属性与字段Kotlin学习手册(...

  • Kotlin学习手册(一)类与继承

    Kotlin系列导读 Kotlin学习手册(一)类与继承Kotlin学习手册(二)属性与字段Kotlin学习手册(...

  • Kotlin学习手册(十)带你真正理解什么是Kotlin协程

    Kotlin系列导读 Kotlin学习手册(一)类与继承Kotlin学习手册(二)属性与字段Kotlin学习手册(...

  • Kotlin 属性与字段

    声明属性 Kotlin 类中的属性既可以用关键字 var 声明为可变的,也可以用关键字 val 声明为只读的。 使...

  • kotlin属性与字段

    借鉴kotlin中文站 声明属性 Kotlin类中声明属性,即可用关键字var声明成可变的,又可以用关键字val声...

  • kotlin属性与字段

    一:声明属性 kotlin类中属性可以使用关键字var也可以使用val,使用一个属性只需要在类实例后引用即可 二:...

  • kotlin的属性与字段

    属性与字段 在kotlin中声明属性可以用var,val声明,其中var声明的是一个可变的变量,val声明是只读的...

  • Kotlin-属性与字段

    属性 声明属性 Kotlin 类中的属性既可以用关键字 var 声明为可变的,也可以用关键字 val 声明为只读的...

  • Kotlin的属性和字段

    Kotlin的属性相当于Java的字段再加上getter和setter方法。 一、读写属性和只读属性 Kotlin...

  • 3. Kotlin属性与字段

    属性与字段 声明属性 属性既可以使用关键字var声明为可变的,也可以用关键字val声明为只读的。 Getters和...

网友评论

      本文标题:kotlin属性与字段

      本文链接:https://www.haomeiwen.com/subject/mrfvtctx.html