[英]class constructor and member variables(fields)
我試圖用構造函數聲明類,但是似乎與該語法沖突並聲明了類成員。
有什么建議這些如何一起使用?
class Person (aName:String) {
var name : String
get() = this.name
set(myName) {this.name = myName}
init {
this.name = aName
}
}
您通過執行set(myName) {this.name = myName}
在set(myName) {this.name = myName}
器內部使用設置器。 這是一個遞歸調用,而不是您應該執行的操作。 而是像這樣使用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
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.