kotlin 的get() set() 方法

 1 class KotlinEntity{

var name: String? =""

set(value) {name=field}

get() {

return field

}

}


2class KotlinEntity{

var name: String? =""

set(value) {name=value}

get() {

return name

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
Kotlin中,可以使用get和set函数来定义属性的访问器。在主构造函数中,属性可以通过声明接收下来成为变量后直接使用。例如,在主构造函数中定义属性的例子如下所示: ``` class Test03(_name:String,_sex:Char,_age:Int,_info:String) { var sex=_sex get() = field var age=_age get() = field var info=_info get() = field var name=_name get() = field private set(value) {field=value} fun show(){ println(name) println(sex) println(info) println(age) } } fun main() { val test03 = Test03("李渐渐", '女', 10, "信息") test03.show() } ``` 另一种方式是在主构造函数中直接定义属性,如下所示: ``` class Test04(var name:String,var sex:Char,val age:Int,val info:String) { fun show(){ println(name) println(sex) println(info) println(age) } } fun main() { val test04 = Test04("李渐渐", '男', 10, "信息") test04.show() } ``` 除了主构造函数外,还可以使用次构造函数来初始化属性。在使用次构造函数时,必须先调用主构造函数,然后执行次构造函数中的内容。例如: ``` class Test05 (name:String ) { constructor(name: String,info:String):this(name){ println("$info") } constructor(name: String,sex:Char,info:String):this(name){ println("${info}和$sex") } constructor(name: String,sex:Char,info:String,age:Int):this(name){ println("${info}和${sex}和${age}和${name}") } } fun main() { Test05("名字", '男', "信息",88) } ``` 在构造函数中还可以使用默认参数,简化代码。例如: ``` class Test06 (name: String?="李小龙") { constructor(name: String?="李小龙",info:String?="信息"):this(name){ println("${info}和${name}") } constructor(name: String?="李小龙",sex:Char='男',info:String="信息"):this(name){ println("${info}和$sex") } constructor(name: String?="李小龙",sex:Char='男',info:String="信息",age:Int=82):this(name){ println("${info}和${sex}和${age}和${name}") } } fun main() { Test06() //运行结果: 信息和男和82和李小龙 Test06(null,null) //运行结果: null和null Test06(age=56) //运行结果: 信息和男和56和李小龙 } ``` 在构造函数中可以使用init代码块对属性进行初始化。init代码块是在主构造函数执行之后立即执行的。例如: ``` class Test08 (_age:Int,val sex:Char){ val derry="AAA" val age=_age init { val ageText=age println("主构造函数被调用了: $ageText") } constructor(name:String, age:Int, sex:Char):this(55,'男'){ println("次构造函数被调用了: $name") } val text="CVV" } fun main() { Test08(50,'男') Test08("王五",78,'女') } ``` 最后,如果想延迟初始化某个属性,可以使用lateinit关键字。此关键字用于标记变量,在声明时不初始化,但在使用之前必须对其进行初始化。例如: ``` lateinit var 变量名:变量类型 ``` 希望以上信息能够帮助到您。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [Kotlin学习笔记(四)——get/set、主次构造函数、初始化](https://blog.csdn.net/mm731296278/article/details/125968471)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值