Рассмотрим класс Bar
:
open class Foo(val i: Int)
class Bar: Foo {
constructor(i: Int): super(i)
}
Поскольку у него нет первичного конструктора, вторичный конструктор должен вызывать конструктор класса, из которого он получен (который Foo
).
Если у класса нет первичного конструктора, то каждый вторичный конструктор должен инициализировать базовый тип с помощью ключевого слова super или делегировать другому конструктору, который это делает.( Source )
В этом конкретном случае вместо этого лучше использовать первичный конструктор:
class Bar(i: Int): Foo(i)
Если производный классимеет первичный конструктор, базовый класс может (и должен) быть инициализирован прямо здесь, используя параметры первичного конструктора.( Источник )