簡體   English   中英

類構造函數和成員變量(字段)

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM