我想初始化,需要一個參數,但沒有在孩子的構造函數聲明一個父對象斯卡拉繼承:如何將參數傳遞給參數而不在孩子中聲明它?
class A(name: String)
我看到的到處是
class B(name: String) extends A(name)
但我想這樣做是
class B extends A {
def this() = this("valueOfName") // string "valueOfName" is passed to A
}
是否有可能在Scala中做到這一點?
**編輯**
這只是一個玩具例子,我真正的情況是比較複雜的,但我想改變傳遞給父參數:
class B(other: String) extends A {
def this() = this(other ++"valueOfName")
}
由於B擴展了A,所以在B中沒有單獨的名爲「name」的成員。沒有B.name存儲在與A.name不同的位置。由於B擴展了A,所以它有一個「名稱」成員,它是A中定義的成員。因此,當你想在B的實例中以不同的方式初始化「名稱」時,你說你想要傳遞不同的值給B.一旦你給B的構造函數傳遞一個值,它就被分配給「name」。沒有中間步驟,也沒有A.name。你可以試試這個:'B類擴展A(「specialValue」)'。 – radumanolescu