Kotlin 类 属性

1,265 阅读1分钟

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

2.要使用一个属性,只要用名称引用它即可,就像 Java 中的字段

3.一个只读属性的语法和一个可变的属性的语法有两方面的不同:1、只读属性的用 val开始代替var 2、只读属性不允许 setter

4.field 标识符只能用在属性的访问器内

class Address {
    var name: String = ……
    var street: String = ……
		var initialized = 1 // 类型 Int、默认 getter 和 setter
		val inferredType = 1 // 类型 Int 、默认 getter
		val isEmpty: Boolean
    		get() = true
    		
    var stringRepresentation: String
    		get() = this.toString()
    		set(value) {
       		  setDataFromString(value) // 解析字符串并赋值给其他属性
    		}
    		
    var setterVisibility: String = "abc"
        private set // 此 setter 是私有的并且有默认实现
        
    var setterWithAnnotation: Any? = null
   			 @Inject set // 用 Inject 注解此 setter
   			 
   	//幕后字段	 
    var counter = 0 // 注意:这个初始器直接为幕后字段赋值
        set(value) {
            if (value >= 0) field = value
        }
}

常量

1.使用 const 修饰符标记为 编译期常量

2.位于顶层或者是 [object 声明] 或 [companion object] 的一个成员

3.以 String 或原生类型值初始化

4.没有自定义 getter

const val aaa: String = "aaaaa"

延迟初始化属性与变量

1.lateinit 修饰符标记该属性

2.该修饰符只能用于在类体中的属性

class A {
   lateinit var a : String
}