我有这样的具体类:斯卡拉:延长混凝土类构造函数的参数
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