Kotlin面试题更新 2026-08-05

在Kotlin语言里,类的声明方式是怎样的?请说明主构造函数与次级构造函数之间存在的差异。

技术原理Kotlin

考察说明

考查对Kotlin类定义及构造函数机制的基础理解。

回答思路

  1. 【回答框架 1】Kotlin中通过class关键字定义类,类名后可直接跟随主构造函数参数列表,如class Person(val name: String)。类体用花括号包裹,可包含属性、方法和初始化块。
  2. 【回答框架 2】主构造函数是类头的一部分,用于声明类的主要参数,可定义属性;它不能包含代码体,初始化逻辑需放在init块中。次构造函数通过constructor关键字在类体内定义,可以有多个,用于提供不同的构造方式。
  3. 【回答框架 3】次构造函数必须直接或间接委托给主构造函数,使用this关键字调用,例如constructor(name: String, age: Int) : this(name)。如果类没有声明主构造函数,次构造函数则无需委托。
  4. 【回答框架 4】主构造函数参数若未用val或var声明,则只在初始化块和属性声明中可见,不会成为类属性;而val或var声明的参数自动成为类属性并可直接访问。
  5. 【关键点 1】Kotlin类用class关键字声明,主构造函数位于类头。
  6. 【关键点 2】主构造函数不包含代码,初始化逻辑置于init块。
  7. 【关键点 3】次构造函数必须委托给主构造函数(除非无主构造)。
  8. 【关键点 4】主构造参数用val或var可自动成为类属性。
  9. 【易错点 1】混淆主构造函数参数与类属性,未加val或var的参数不可直接访问。
  10. 【易错点 2】忘记次构造函数委托给主构造函数导致编译错误。
  11. 【易错点 3】认为主构造函数可以包含代码体,实际只能通过init块执行初始化。