kotlin get set
时间: 2024-01-15 15:05:21 浏览: 139
在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 ]
阅读全文