了解Kotlin中的辅助构造函数

时间:2019-08-07 21:54:35

标签: kotlin

我不了解this的使用以及如何创建对象或调用构造函数以及以下代码中发生的事情。

class Person {
    var children: MutableList<Person> = mutableListOf<Person>();
    constructor(parent: Person) {
        parent.children.add(this)
    }
}

class Person(val name: String) {
    var children: MutableList<Person> = mutableListOf<Person>();
    constructor(name: String, parent: Person) : this(name) {
        parent.children.add(this)
    }
}

源:https://kotlinlang.org/docs/reference/classes.html

1 个答案:

答案 0 :(得分:0)

: this(...)调用意味着调用另一个构造函数,因此每个对象也都是使用主要构造函数构造的。

class Person /* a */ (val name: String) {
    var children: MutableList<Person> = mutableListOf<Person>();
    /* b */ constructor(name: String, parent: Person) : this(name) {
        parent.children.add(this)
    }
}

在此示例中,在a之后有主要构造函数,在b之后有次要构造函数,因此有两种实例化此类的方法。

  1. 调用主要构造函数:Person("abc")
  2. 调用辅助构造函数:Person("abc", Person("dfg")),并确保将同时调用主构造函数和辅助构造函数。