Kotlin面试题更新 2026-08-03

请详细说明 Kotlin 里 object 关键字的具体用途,并解释不同用途之间的区别。

考察说明

考查对 Kotlin object 关键字多种用法的掌握程度,以及能否清晰区分不同场景。

回答思路

  1. 【回答框架 1】object 关键字在 Kotlin 中主要用于三种场景:对象声明、伴生对象和对象表达式。对象声明用于定义单例,通过 class 关键字和 object 结合,在类加载时初始化,线程安全,直接使用类名引用实例。
  2. 【回答框架 2】伴生对象是类内部的 object 声明,用 companion 标记,可以访问类的私有成员,类似于 Java 的静态成员,但本质上仍是对象,可以继承接口或类。通常用于定义工厂方法或静态常量。
  3. 【回答框架 3】对象表达式用于创建匿名内部类的实例,可以继承类或实现接口,每次执行都会创建新对象,用于需要一次性使用的实例。
  4. 【回答框架 4】区别:对象声明和伴生对象都是单例,但伴生对象属于类,而对象表达式每次新建;对象声明可以直接引用,伴生对象需要通过类名调用,对象表达式常用于参数传递。
  5. 【关键点 1】对象声明创建单例,伴生对象提供静态成员替代,对象表达式创建匿名实例。
  6. 【关键点 2】伴生对象在类加载时初始化,且可以访问类的私有成员。
  7. 【关键点 3】对象表达式不是单例,每次执行都会创建新对象。
  8. 【易错点 1】不要混淆伴生对象与静态成员,伴生对象仍是对象实例。
  9. 【易错点 2】对象声明是懒加载的吗?实际上对象声明在首次访问时初始化,但伴生对象在类加载时初始化,需根据版本确认。