我有一个带有默认参数值的抽象类。 我不想在所有可能的实现类的构造函数中重复使用默认值。
abstract class Place(val place: String = "World")
class Message(val message: String = "Hello", p: String) extends Place(p) {
override def toString = s"$message $place"
}
What I want to get
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
我曾考虑使用忽略第二个参数的辅助构造函数,但它并没有帮助,因为你无法在主构造函数之外调用超级构造函数。
我想知道如何做到这一点,或者为什么不可能做到。我不想寻找解决方法,比如不使用继承。