а зачем в SpaceOperations передается k: Number, а потом все равно приводится в дабл?
Это довольно спорный момент, может быть будет выпилено. Но вообще, это сделано для того, чтобы в целочисленной алгебре можно было все в целых сделать, переопределив этот метод
А где вы такое видели, что 5 само по себе - не int? Другое дело, если вместо 5 переменная типа double. Тогда вероятно лучше явно описать свои намерения.
Свифт, х-ль и т.п. Да даже котлин. Тип литерала != типу переменной, который выведется при присвоении литерала.