为了活动小家电-kotlin的构造函数(二)

128 阅读2分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 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 的次级构造函数

让我们按代码顺序列出它们。

  1. init
  2. 主构造函数
  3. 次级构造函数

调用的顺序与上述相同。

constructor(name)与上面顺序相同。

init {} 总是被调用secondary constructor,即使你只是init {}先定义了它。

为了活动小家电,下一篇继续搞!