[英]Scala: How to set an instance field defined in an abstract super class constructor?
[英]scala: how to update super class attributes
我是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
的值,而z
始终保持None
。
这种行为的原因是什么?
使用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 = ???
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.