我有這樣的具體類:斯卡拉:延長混凝土類構造函數的參數
class Person (var name: String, var surname: String)
,我想創建一個擴展人另一個類:
class Son (name: String, surname: String) extends Person(name, surname)
確定。 但我確實希望Son的構造函數中的字段必須是var而不是val。 我該如何解決這個問題?這些字段必須保留構造函數參數。
更新#2
我的問題是: 如果我定義兒子的方法,這不,如果我的值更改爲兒子的一個實例的參數工作。
class Son (name: String, surname: String) extends Person(name, surname){
def printSon = {
if(this.name=="name")println("Error name Person")
if(this.surname=="surname")println("Error surname Person")
}
}
object main {
def main(args: Array[String]): Unit = {}
val Marco = new Son("Marco","Bianchi")
Marco.printSon // So far everything is ok
Marco.name="name"
Marco.printSon // Here in control is not done, because Marco.name="name" writes in Person
println("FINE")
}
兒子姓e的姓氏是val型。
這些字段已經在'兒子'中可變。你的意思可能相反嗎?或者你想實現的是什麼? – Frank
嗨,我在#2更新# – user1826663
回答了你,我沒有看到你通過試圖隱藏Person的構造函數的參數。如果你將Person改爲Trait,那麼你只需將Son與Person一起,就可以訪問它的字段 – Alex