val和def都会被编译为一个方法,区别是:val会被编译器保证运行时其值不能改变,但def不同,是可以改变的。
val init : String
===>
public abstract String init()
var则不同,其会被编译为两个方法,
var init: String
====>
public abstract String init(); //类似get方法
public abstract void init_$eq(String); //类似set方法。
ok, 如有需要以后还会补充,刚学不足的地方有很多,希望大家多提意见