我有一個抽象類,其參數的默認值。 我不想在所有可能的實現的構造函數中重用默認值。父類中的Scala繼承默認參數
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
我使用輔助構造省略第二個參數考慮,但它並沒有幫助,因爲你不能調用主構造之外的超級構造函數。
我想知道如何去做,或者爲什麼它是不可能的。我不在尋找解決方法,就像不使用繼承一樣。
作品。不如封裝。在這裏你有3個對象來對付(對象,抽象和類)。特別是不要對具有相同名稱的對象和摘要進行評分。類消息必須知道有關對象的地方,所以使用它需要更多的接線,如果這是有道理的。抽象和具體應該處理這一切。 – Drew