open class Super(val value: Int) {
constructor(value: Super) : this(value.value)
}
class Sub(value: Int) : Super(value) {
constructor(value: Sub) : super(value)
}Наследник не компилируется, сообщая, что нельзя использовать super в данном контексте, а надо использовать this. Покурив документацию, я всё-таки написал требуемую мне иерархию: class SubOK : Super {
constructor(value: Int) : super(value)
constructor(value: SubOK) : super(value)
}Это не лишено некоторой логики: если определяется конструктор по-умолчанию, то остальные конструкторы должны использовать только его. Во втором случае у класса SubOK нет конструктора по-умолчанию, а оба конструктора равноправны. Но на мой взгляд, логика достаточно спорная, да и добавляет лишнюю строку кода.PS. Коллеги подсказывают, что похожее поведение у Scala.
Комментариев нет:
Отправить комментарий