Как получить доступ к параметрам первичного конструктора внутри вторичного конструктора 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: Я знаю, что могу написать блок инициализации и назначить параметры переменной класса, и он работает, как ожидалось.

2 ответа

Решение

Вы должны вызвать свой вторичный конструктор, который ожидает конечного 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"). я надеюсь, что это было ясно.

Другие вопросы по тегам