【发布时间】:2019-08-07 21:54:35
【问题描述】:
我不明白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)
}
}
【问题讨论】:
-
那么...您对链接页面上的解释有什么不明白的地方?
-
当你创建 Person A 时,是否必须将另一个 Person B 对象传递给 Person A 构造函数。 parent.children.add(this) 做什么?你能给我举一个对象是如何创建的例子吗?
-
如果您调用辅助构造函数,是的,因为它需要一个 Person 作为参数。
parent.children.add(this)添加当前对象,正在构造(this)到作为参数传递的父 person 的孩子。示例:val francis = Person("Francis Ford Coppola") val sofia = Person(name = "Sofia Coppola", parent = francis)。之后,franciis 的孩子列表中包含 sofia。 -
那是因为您正在尝试使用 Person 的第一个版本,它没有带名称的主构造函数。使用第二个。
标签: kotlin