You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Kotlin 中的构造函数主要分为主构造函数和次构造函数。主构造函数写在类头部,没有函数体,可以通过 val 或 var 直接把构造参数声明成成员属性;如果参数没有 val/var,它只是构造参数,不会成为成员属性。主构造函数还可以使用默认参数,因此很多情况下可以替代 Java 中大量的构造函数重载。
Activity
iOrchid commentedon Nov 4, 2019
一、概要简述
kotlin中构造函数分为主构造和次级构造两类constructor标记构造函数,部分情况可省略init关键词用于初始化代码块,注意与构造函数的执行顺序,类成员的初始化顺序data class、object/componain object、sealed class等构造函数情况与继承问题二、详细说明
主/次 构造函数
init初始化代码块特殊类
jingerlovexiaojie commentedon Jul 27, 2020
istudygithub commentedon Aug 24, 2026
Kotlin 中的构造函数主要分为主构造函数和次构造函数。主构造函数写在类头部,没有函数体,可以通过 val 或 var 直接把构造参数声明成成员属性;如果参数没有 val/var,它只是构造参数,不会成为成员属性。主构造函数还可以使用默认参数,因此很多情况下可以替代 Java 中大量的构造函数重载。
如果初始化逻辑比较复杂,可以使用 init 代码块。属性初始化器和 init 块会按照它们在类中出现的顺序执行。
次构造函数使用 constructor 声明。如果类存在主构造函数,次构造函数必须直接或间接通过 this(...) 委托给主构造函数。次构造函数自己的代码会在主构造函数及其初始化逻辑完成之后执行。
另外需要注意继承时的构造顺序:创建子类对象时会先初始化父类,再初始化子类;父类构造函数需要通过 : Super(...) 显式调用。同时不要在父类构造函数或 init 中调用可以被子类 override 的 open 成员,否则可能访问到尚未初始化的子类状态。
最后,Kotlin 创建对象不需要 new,构造函数默认是 public,如果希望限制实例创建,可以使用 private constructor。