0
respostas

Respondendo a pergunta do Waldomiro sobre o companion object

Infelizmente não é possível responder uma dúvida, se ela já tem um mês de idade.

A pergunta foi essa:

https://cursos.alura.com.br/forum/topico-utilizando-companion-object-141836

A property plr ainda não havia sido inicializada quando quando o init de Funcionario tinha sido chamada.

open class Foo(a: String) {
    open val result = a
    init {
        // O objeto pai e inicializado antes do objeto filho.
        // a chamada a property result e feita no objeto que a esta sobreescrevendo, no caso Bar.
        // Mas, enquanto Foo nao terminar de executar este init, a linha com "override val result = a + b" ainda nao rodou.
        // Portanto ele printa null.
        print(result)
    }
}

class Bar(a: String, b: String) : Foo(a) {
    override val result = a + b
}

fun main() {
    Bar("aBar", "bBar")
}

Acredito ser esse o motivo. Me corrijam se eu estiver errado.