У меня есть абстрактный класс со значением по умолчанию для его параметра. Я не хочу повторно использовать значение по умолчанию в конструкторе всех возможных реализаций.
abstract class Place(val place: String = "World")
class Message(val message: String = "Hello", p: String) extends Place(p) {
override def toString = s"$message $place"
}
Что я хочу получить
new Message("Hi", "Universe") = "Hi Universe" // Ok
new Message("Hi") = "Hi World" // Doesn't work, second parameter is required
new Message() = "Hello World" // Doesn't work, second parameter is required
Я рассматривал возможность использования вспомогательного конструктора без второго параметра, но это не помогает, поскольку вы не можете вызывать суперконструкторы вне основного конструктора.
Я хочу знать, как это сделать или почему это невозможно. Я не ищу обходного пути, например, отказа от наследования.