首页 新闻 会员 周边

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

0
[已解决问题] 解决于 2018-03-28 10:59

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没有调用 为什么?
超灬超的主页 超灬超 | 初学一级 | 园豆:21
提问于:2018-03-21 16:57
< >
分享
最佳答案
0

kotlin每定义一个属性 会默认生成一个getter和setter方法 所以若要重写也就是覆盖默认方法。需要在每一个属性下面重写get set才可以
var name=4
get(){
println("获取E属性值{$field}")
return field
}
set(value) {
field=value
println("写入{$field}")
}

 var age=1
get(){
    println("获取E属性值{$field}")
    return field
}
set(value) {
    field=value
    println("写入{$field}")
}
超灬超 | 初学一级 |园豆:21 | 2018-03-26 13:28
其他回答(1)
0

感觉是值类型和引用类型区别

ljerry886 | 园豆:245 (菜鸟二级) | 2018-03-21 17:46
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册