2.3 Kotlin的类(二)

2.3.1 对象声明和对象表达式

对象声明、对象表达式和伴生对象都用到了object关键字。

1.对象声明(Object Declarations)

对象声明是指在object关键字之后指定对象名称。

Kotlin通过对象声明可以实现单例模式,这是Kotlin在语法层面上的支持。使用对象声明创建单例类:

     object 单例名[: 继承父类、实现接口] {
       成员属性
       成员函数
     }

例如:

将上述代码生成的class文件进行反编译,可以看到使用对象声明跟使用饿汉模式生成的单例是类似的,如图2-6所示。

图2-6 对象声明反编译后

所以在Java中调用Singleton1的printlnHelloWorld()方法应该是这样的:

虽然类似于饿汉模式,但是是延迟初始化的。因为只有在第一次用到printlnHelloWorld()方法时,Singleton1才会初始化。

2.对象表达式(Object Expressions)

对象表达式类似于Java的匿名内部类:

与Java的匿名内部类相比,它有以下特性:

· 支持实现多个接口。

· 能够访问非final修饰的变量。