携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的8天,点击查看活动详情
为了活动小家电,接着上篇搞!
init {}
主构造函数不能包含任何代码。初始化代码可以放在初始化块中,这些块以 init 关键字为前缀
这是一个定义,默认构造函数不能包含代码,初始化代码必须以 init 块开头。
val/var而且您只能在顶级构造函数中拥有变量(充当全局变量)。
在sub中定义constructor,val/var会引发错误。
这里再次看到的类原型如下。
class ClassName constructor() {
init {
// 想做啥就做啥
}
}
主/次构造函数
要检查init,可以编写以下代码。
class Sample constructor() {
init {
println("类的初始化")
}
constructor(name: String): this() {
println("Sample 的次级构造函数")
}
}
上述类是一起定义主要/次要的情况。
主要和次要参考下面的代码。
- 主要构造:
constructor() - 次级构造:
constructor(name: String)
Primary是指在定义类的同时定义构造函数的情况,而class {在后面定义时,secondary是次构造函数。
下面的代码secondary constructor仅适用于
class Sample {
init {
println("类的初始化")
}
constructor(name: String): this() {
println("Sample 的次级构造函数")
}
}
如果打印上面的代码,可以如下检查。
类的初始化
Sample 的次级构造函数
当 init 被调用时
要想写出更漂亮的 kotlin 风格代码,熟悉 init 会很有帮助。
当第二个 Sample (“帅哥”) 构造函数被初始化时,它被如下调用。
// 初始化块
类的初始化
// constructor(name: String)
Sample 的次级构造函数
让我们按代码顺序列出它们。
- init
- 主构造函数
- 次级构造函数
调用的顺序与上述相同。
constructor(name)与上面顺序相同。
init {} 总是被调用secondary constructor,即使你只是init {}先定义了它。
为了活动小家电,下一篇继续搞!