2016-11-11 25 views
1

我想初始化,需要一個參數,但沒有在孩子的構造函數聲明一個父對象斯卡拉繼承:如何將參數傳遞給參數而不在孩子中聲明它?

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") 
} 
+0

由於B擴展了A,所以在B中沒有單獨的名爲「name」的成員。沒有B.name存儲在與A.name不同的位置。由於B擴展了A,所以它有一個「名稱」成員,它是A中定義的成員。因此,當你想在B的實例中以不同的方式初始化「名稱」時,你說你想要傳遞不同的值給B.一旦你給B的構造函數傳遞一個值,它就被分配給「name」。沒有中間步驟,也沒有A.name。你可以試試這個:'B類擴展A(「specialValue」)'。 – radumanolescu

回答

1

只是傳遞價值直接給A的構造函數。像這樣:

class B extends A("valueOfName") 
+0

我接受你的回答,因爲這是我所問的,但這不是我想要做的,你能否看看編輯部分,並告訴我你是否看到了解決方案?謝謝 – samidarko

+0

@samidarko'class B(other:String)extends A(other +「valueOfName」)' –

相關問題