簡體   English   中英

如何在輔助構造函數kotlin中訪問主構造函數參數

[英]How to access primary constructor parameters inside secondary constructor kotlin

我正在學習 kotlin 並且我正在閱讀有關構造函數的內容:主要和次要。

這是我的問題,我應該如何訪問輔助構造函數中的主構造函數參數。 我無法訪問,但我不知道為什么? 為什么我不能直接訪問它?
如果有人知道,請幫助我更好地理解這個概念。 為什么我無法訪問它?

我創建了一個帶有兩個構造函數的演示類,這里是我的代碼:

fun main(args: Array<String>) {

    val person1 = Person("Joe", 25)
    println("First Name = ${person1.firstName}") // working, printing first name 

}

class Person(val firstName: String, var age: Int) {

    constructor(sectionName: String, id: Int, name: String) : this(sectionName,id)  {
        println("Age = ${age}") // not working, no output
    }

}

還是我做錯了什么?

PS:我知道我可以編寫 init 塊並將參數分配給類變量,它按預期工作。

您必須調用輔助構造函數,它需要一個尾隨name參數:

    val person1 = Person("Joe", 25, "name") //prints Age = 25
    val person2 = Person("Joe", 25) //prints nothing

在您的示例中,主構造函數被選擇為您的參數列表映射其參數。

在您的代碼val person1 = Person("Joe", 25)您正在調用一個具有兩個參數的構造函數,這是第一個構造函數而不是第二個。 像這樣調用第二個構造函數val person1 = Person("Joe", 25,"name") 我希望這很清楚。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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