KOTLIN新手入门 关于内部类的属性set get方法

package practice

open class Parent{
open val name="BABA"
val money=5
get(){
println("获取B属性值")
return field
}
}
open class Child: Parent(){
override var name="ERZI"
var age=1
// val money=2 不允许重写(覆盖父属性)
get(){
println("获取E属性值{$field}")
return field
}
set(value) {
field=value
println("写入{$field}")
}

}

fun main(args: Array<String>) {
var child=Child();
child.name="ss"
child.age=2
println( child.name)
println( child.age)
}

写入{2} ss 获取E属性值{2} 2 上面是打印结果 打印结果 :只有age才调用了set get方法 name没有调用 为什么?

智慧大石
浏览 2804回答 1
1回答

守着一只汪

kotlin每定义一个属性 会默认生成一个getter和setter方法 所以若要重写也就是覆盖默认方法。需要在每一个属性下面重写get set才可以var name=4get(){println("获取E属性值{$field}")return field}set(value) {field=valueprintln("写入{$field}")}&nbsp;var&nbsp;age=1get(){&nbsp;&nbsp;&nbsp;&nbsp;println("获取E属性值{$field}")&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;field }set(value)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;field=value&nbsp;&nbsp;&nbsp;&nbsp;println("写入{$field}") }
打开App,查看更多内容
随时随地看视频慕课网APP