Ну, вы называете нужную вам перегрузку, это довольно просто.
ВАРИАНТ 1
class FooBaseClass{
constructor(errorMessage: String){
}
constructor(errorMessage: String, errorCode: Int){
}
}
class FooDerivedClass : FooBaseClass{
constructor(errorMessage: String) : super(errorMessage)
constructor(errorMessage: String, errorCode: Int : super(errorMessage, errorCode)
}
Я бы также сказал, что если вы не будете делать независимые вещи в этих конструкторах, было бы проще использовать значения по умолчанию, такие как.
ВАРИАНТ 2
class FooBaseClass{
constructor(errorMessage: String, errorCode: Int? = null){
if(errorCode != null){
//use it
}
}
}
class FooDerivedClass : FooBaseClass{
constructor(errorMessage: String, errorCode: Int? = null : super(errorMessage, errorCode)
}
Просто предложение. И вы можете сделать еще один шаг вперед, если есть только один конструктор, вы можете просто сделать конструктор по умолчанию, например:
ВАРИАНТ 3
class FooBaseClass(errorMessage: String, errorCode: Int? = null){
val errStr: String = errorMessage
val errCode: Int? = errorCode
}
class FooDerivedClass
constructor(errorMessage: String, errorCode: Int? = null : super(errorMessage, errorCode){
}
ПРИМЕЧАНИЕ * Сохранение в локальных переменных необходимо только в том случае, если вы выполняете привязку данных get / set или другие аннотации, для которых требуется добавить переменную.
Счастливое кодирование