类构造函数和成员变量(字段)

我试图用构造函数声明类,但似乎与该语法冲突并声明类成员。

任何建议如何一起去?

class Person (aName:String) { var name : String get() = this.name set(myName) {this.name = myName} init { this.name = aName } } 

你正在setter set(myName) {this.name = myName}使用setter中的setter。 这是一个递归调用,而不是你应该做的。 而是使用像这样的field访问器 :

 name: String? = null set(myName) { field = myName } 

但实际上,你甚至不需要这个。 您可以在主构造函数中声明该name应该是您的类的属性:

 class Person(var name: String) 

你不需要这些。 你可以在构造函数中定义一个name作为var ,Kotlin会将其作为一个属性公开。

 class Person(var name: String) // Usage... val p = Person("Dave") println(p.name) // "Dave" p.name = "Phil" println(p.name) // "Phil" 

只要添加到其他人所说的内容中,如果您希望将aName作为单独的构造函数参数,则这是更好的语法:

 class Person (aName:String) { var name = aName }