Я пытаюсь расширить класс, имеющий первичные и вторичные конструкторы. Причина в том, что я хочу частный / защищенный первичный конструктор, который имеет поля, общие для двух вторичных конструкторов. Это прекрасно работает для базового класса, но расширяя , этот класс не позволяет мне сделать это.
Вот пример того, что я хочу сделать:
abstract class A constructor(val value: Int) {
var description: String? = null
var precision: Float = 0f
constructor(description: String, value: Int) : this(value) {
this.description = description
}
constructor(precision: Float, value: Int) : this(value) {
this.precision = precision
}
abstract fun foo()
}
class B(value: Int) : A(value) {
// Compiler complains here: Primary constructor call expected.
constructor(longDescription: String, value: Int) : super(longDescription, value)
// Compiler complains here: Primary constructor call expected.
constructor(morePrecision: Float, value: Int) : super(morePrecision, value)
override fun foo() {
// Do B stuff here.
}
}