1、成员变量默认权限修饰符为public
2、var、val都可以声明属性
3、类的内部可以定义属性、构造方法参数中var/val修饰的都是属性(注意:如果构造方法的参数无var/val修饰,则是构造方法的一个普通参数)
4、属性的初始化尽量在构造方法中完成,如果无法在构造方法中初始化,可以设置为局部变量
5、var可以用lateinit延迟初始化,val可以用by lazy(lazy{} 只能用在val类型, lateinit 只能用在var类型)
6、lateinit可以在任何位置初始化并且可以初始化多次。而lazy在第一次被调用时就被初始化,想要被改变只能重新定义
7、lateinit修饰符只能修饰不可空类型,并且不允许修饰基础类型(四类八种基础类型int, double,boolean等)