У вас есть рекурсия в вашем коде:
class ChequePayment : Payment {
constructor(amount: Int, name: String, bankId: String) : super(amount) {
this.name = name
this.bankId = bankId
}
var name: String
get() = this.name // recursion: will invoke getter of name (itself)
var bankId: String
get() = this.bankId // recursion: will invoke getter of bankId (itself)
}
Если вам не нужна пользовательская логика для вашего геттера, просто оставьте свои свойства так:
var name: String
var bankId: String
Они будутиметь метод получения по умолчанию, который ничего не делает, кроме как возвращает значение поля поддержки.
Примечание: Код, как он есть, может / должен быть реорганизован для этого:
class ChequePayment(amount: Int, var name: String, var bankId: String) : Payment(amount) {
// ...
}
При этом используется основной конструктор, и он намного менее избыточен.