数据类 data class
当你在kotlin代码中发现一个类,有data标记,则代表这个类是个数据类。
个人理解类似Javabean的作用,可直观理解为数据实体类。
数据类,放在 println(data类对象),打印出来的是 成员属性,不是以往Java的那种一个代表对象的数字。
这个数据类,唯一特殊的地方,就是有个copy方法。拷贝对象,并可以通过构造指定你要修改的属性的值。
Object关键字
对象声明是在第一次被访问到时延迟初始化的
被关键字声明的,可以直接调用里面的方法,是不是很像Java的静态方法呢
BookShelf.showBooks()
对象声明的初始化过程是线程安全的(Java此时的synchronized原地打滚中.jpg)。这就很单例了。
对象表达式----通过对象表达式可以越过类的定义直接得到一个对象,可用作匿名对象或者出现在表达式的右边出现。匿名对象,也不要觉得就多神奇,就是不需要看到真正的对象名称,不知名的实例化,object实现某个接口啊啥的,作为一个对象存在,然后好实现接口的方法。
伴生对象(companion object),你可以认为是Java的静态的替代方案吧,但是这个伴生对象是个另外独立的对象,可以独立实现接口的方法等等。伴生对象和Java的静态特别的相似,初始化是在容纳它的类创建时开始的。
@JvmStatic
注解,可以将伴生对象的成员生成为真正的静态方法和属性。