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條經驗 獲得超4個贊
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 關注
- 2979 瀏覽
添加回答
舉報
0/150
提交
取消