Решение основного наследования Котлина

Как создать новую SavingAccount с значениями init для owner и balance

 open class BankAccount(val owner: String = "Long John Silver", private var balance: Double = 0.00) { constructor (amount: Double) : this() { this.balance = amount } fun deposit(amount: Double){ this.balance += amount } fun withdraw(amount: Double){ this.balance -= amount } fun getBalance(): Double{ return this.balance } } 

И дочерний класс

 class SavingAccount(val increasedBy: Double = 0.05): BankAccount(){ fun addInterest(): Unit{ val increasedBy = (this.getBalance() * increasedBy) deposit(amount = increasedBy) } } 

и в основном

 fun main(args: Array<String>) { val sa = SavingAccount();// how to do this SavingAccount("Captain Flint", 20.00) println(sa.owner) println(sa.owner) } 

Как я могу создать SavingAccount для нового пользователя без значений по умолчанию?

Вы можете реализовать его с помощью обычных конструктор-аргументов (следовательно, нет свойств) и передать их в свой BankAccount

 class SavingAccount(owner: String, balance: Double, val increasedBy: Double = 0.05 ): BankAccount(owner, balance) { } 

Значения по умолчанию для SavingAccount можно определить аналогично значениям BankAccount :

 class SavingAccount(owner: String = "Default Owner", balance: Double = 0.0, val increasedBy: Double = 0.05 ): BankAccount(owner, balance) { } 

Измените свою декларацию класса на

 class SavingAccount(owner: String, balance: Double, val increasedBy: Double = 0.05): BankAccount(owner, balance)