1.普通成员变量背后隐士代码
为什么在kotlin中是private 可以直接调用,隐式代码如下

package Kotlin.Stage4

class Test54{
    var name="kotlin"
    /*背后做的事

    @NotNull
    private String name="kotlin";
    public void setName(@NotNull String name){
           this.name=name;
    }
    @NotNull
    public void getName(){
           return this.name;
    }

     */
}

fun main() {
    //背后隐士代码new Test54().setName("java")
    Test54().name="java"
    //背后隐士代码System.out.println(new Test54().getName() )
    println(Test54().name)
}

val只有get方法 不能set
2.field关键字

package Kotlin.Stage4

class Test54_field{
    var info="abc and def"
        //下面的隐式代码 不写也有,就是下面的样子
  /*  get() = field
    set(value) {
        field =value
    }*/
        get() = field.capitalize()//获取时把首字母修改为大写
        set(value) {
            field ="[---${value}---]"
        }
    /* 背后做的事情
      @NotNull
    private String info="abc and def";
    public void setInfo(@NotNull String info){
           this.info="[---"+"info+"---]";
    }
    @NotNull
    public void getName(){
           return StringKT.capitalize(this.info);
    }
    */


}


fun main() {
    //背后隐式代码new Test54_field().setInfo("java")
    Test54_field().info="java"
    //背后隐士代码System.out.println(new Test54_field().getInfo() )
    println(Test54_field().info)
}
09-17 18:26