主构造函数 次构造函数 初始化顺序 延迟初始化 惰性初始化

主构造函数

次构造函数:我们可以定义多个次构造函数来配置不同的参数组合。

 定义构造函数时,可以给构造函数的参数指定默认值,如果用户不提供值参,就使用这个默认值。

class Player2(
    _name: String,
   var age: Int = 20,
    var isNormal: Boolean
) {

    var name = _name
        get() = field.capitalize()
        set(value) {
            field = value.trim()
        }

    constructor(name: String) : this(name, age = 10, isNormal = false)

    constructor(name: String, age: Int) : this(name, age = 10, isNormal = false){
        this.name = name.toUpperCase()
    }

}



 val p = Player2("Jack", 20, true)
 val p2 = Player2("Rose")
 val p3 = Player2("Jacky",20)
 val p4   =  Player2(isNormal =  false,_name ="Jack")









 初始化顺序

 延迟初始化

 lateinit :变量在用的时候才初始化  需要手动初始化  否则报错

  

lateinit var equipment:String
equipment = "sharp knife"
 
  
 

惰性初始化:一个属性先写好初始化的函数,暂时还不会执行, 只有当你使用调用的时候才会执行该函数

class Player5(_name:String) {
    var name = _name

     val config by lazy {loadConfig()}
    //  val config = loadConfig() //loading...   xxx
    private fun loadConfig():String{
        println("loading...")
        return "xxx"
    }
}

fun main() {
    val p = Player5("Jack")
    Thread.sleep(3000)
    println(p.config)
}

猜你喜欢

转载自blog.csdn.net/qq_33552379/article/details/121343938
今日推荐