Beginner question - Herança - por que meu parâmetro construtor de idade não é usad
Pergunta noob aqui, estou trabalhando no meu caminho através de um iniciante da Udemy Kotlin curso e não consigo entender por que meu parâmetro de idade não é usado quando uso minha classe derivada, mas funcionará quando minha classe base for usad
Person Class
open class Person(open var firstname: String, open var surname: String,
open var age: Int) {
val thisyear: Int = Calendar.getInstance().get(Calendar.YEAR)
val dob = thisyear - age
fun printperson() {
println("$firstname $surname was born in $dob")
}
}
Student Class
class Student(override var firstname: String, override var surname:
String, override var age: Int, val studentID: Int):
Person(firstname, surname, age) {
fun returnDetails() {
println("Hello $firstname, your Student ID is: $studentID")
}
}
A Principa
fun main(args: Array<String>) {
val studentMike = Student(firstname = "Mike",
surname = "Stand", age = 67, studentID = 8899)
studentMike.printperson()
studentMike.returnDetails()
val personBill = Person(firstname = "Bill", surname = "Hook", age = 34)
personBill.printperson()
}
Saíd
Mike Stand was born in 2018
Hello Mike, your Student ID is: 8899
Bill Hook was born in 1984
Como você pode ver, Bill era um uso direto do método na Person Person, enquanto Mike era uma chamada indireta, o parâmetro de idade deveria ter sido herdado da Person Person por meio da Student Student ...
Olhando para os documentos oficiais do Kotlin, parece que o problema está relacionado ao " Ordem de inicialização da classe derivada "mas por toda a minha vida não consigo entender como corrigir isso.
Obrigado pela ajuda
@PS pede desculpas pela terminologia imprecisa. Sempre contente com os indicadores para fazer melhor.