scala:如何更新超类属性

时间:2013-03-17 06:18:07

标签: scala

我是 scala 的新手,并且有更新属性的问题。

我有一个继承自抽象类的类,如下所示:

abstract class A(x:type1,y:type1){
     val z:Option[type1]= None
     def void:type2 
} 

class B extends A(x,y){ 
     def this(x:type1,y:type1,z_:type1)= {this(x,y) val z=Some(z_)}
     def void:type2 = ??? 
}

如果我致电new B(test,test,test),则不会更新始终为z的{​​{1}}的值。

这种行为的原因是什么?

1 个答案:

答案 0 :(得分:0)

使用val可以创建不可变的字段/变量。在子类中声明另一个。如果要更新它,请在超类中使用var,并在子类中进行赋值。这应该有效:

abstract class A(x:type1,y:type1){
     var z:Option[type1]= None
     def void:type2 
} 

class B extends A(x,y){ 
     def this(x:type1,y:type1,z_:type1)= {this(x,y) z=Some(z_)}
     def void:type2 = ??? 
}