Почему невозможно передать объект-член в конструктор суперклассов?
Это работает:
class Foo(private val whatever : Object = Object()) : BaseClass(whatever) {
fun someFunction() {
// Do something with "whatever"
println(whatever.toString())
}
}
Но это не так:
class Foo() : BaseClass(whatever) {
private val whatever = Object()
fun someFunction() {
// Do something with "whatever"
println(whatever.toString())
}
}
Член whatever
не может быть передан в базовый класс во втором примере. Это имеет смысл, поскольку подкласс инициализируется после базового класса и в настоящее время whatever
еще не существует. Но почему работает первый пример?