package practiceopen class Parent{open val name="BABA"val money=5get(){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=valueprintln("写入{$field}")}}fun main(args: Array<String>) {var child=Child();child.name="ss"child.age=2println( child.name)println( child.age)}写入{2} ss 获取E属性值{2} 2 上面是打印结果 打印结果 :只有age才调用了set get方法 name没有调用 为什么?
1 回答
守着一只汪
TA贡献1872条经验 获得超3个赞
kotlin每定义一个属性 会默认生成一个getter和setter方法 所以若要重写也就是覆盖默认方法。需要在每一个属性下面重写get set才可以
var name=4
get(){
println("获取E属性值{$field}")
return field
}
set(value) {
field=value
println("写入{$field}")
}
var age=1get(){ println("获取E属性值{$field}") return field }set(value) { field=value println("写入{$field}") }
- 1 回答
- 0 关注
- 2897 浏览
添加回答
举报
0/150
提交
取消