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