Class 类构造函数和成员变量(字段)
我试图用构造函数声明类,但似乎与该语法和声明类成员有冲突 有什么建议如何配合这些Class 类构造函数和成员变量(字段),class,variables,constructor,kotlin,Class,Variables,Constructor,Kotlin,我试图用构造函数声明类,但似乎与该语法和声明类成员有冲突 有什么建议如何配合这些 class Person (aName:String) { var name : String get() = this.name set(myName) {this.name = myName} init { this.name = aName } } 你不需要这些。您可以在构造函数中将name定义为var,Kotlin将其作为属性公开
class Person (aName:String) {
var name : String
get() = this.name
set(myName) {this.name = myName}
init {
this.name = aName
}
}
你不需要这些。您可以在构造函数中将
name
定义为var
,Kotlin将其作为属性公开
class Person(var name: String)
// Usage...
val p = Person("Dave")
println(p.name) // "Dave"
p.name = "Phil"
println(p.name) // "Phil"
您通过执行
set(myName){this.name=myName}
在setter中使用setter。这是一个递归调用,不是您应该做的。相反,请使用以下方法:
name: String? = null
set(myName) {
field = myName
}
但实际上,你根本不需要这个。您可以在主构造函数中声明name
应该是类的属性:
class Person(var name: String)
为了补充其他人所说的内容,如果您想将
aName
作为单独的构造函数参数,这里有一个更好的语法:
class Person (aName:String) {
var name = aName
}
难道你们不能把这个名字声明为var吗?是的,我对可见性、getter和setter很困惑。与java规则相比,您直接处理成员,但是存在setter和getter,这使得成员可见性更让我困惑,为什么在第一个示例中您将名称设置为可选的?