使用父类对象在Scala中实例化子类对象?

时间:2017-03-30 10:48:21

标签: scala

例如,有两个名为A和B的scala类。

class A{
  val aVariable:String="a"
}

class B(val newVariable:String) extends A{
  def newMethod(): Unit ={

  }
}

问题是如何使用A对象用其变量实例化B对象? 例如,函数采用A对象和字符串来创建B对象

val bObject:B=BuildFunc(new A(),"string")

如果A包含很多变量,有没有办法避免手动设置每个变量?

在Java中似乎可以通过像super(aObject)之类的代码来完成,Scala中是否有等效的方法?

1 个答案:

答案 0 :(得分:0)

这里有多种解决方案。例如,可以定义A将A的构造函数参数提升为字段:

class A(val foo: String)
class B(override val foo: String, val baz: String) extends A(foo)

如果你不能改变A的定义,那么这可能会有所帮助:

class A {
  val foo: String = "foo"
}
class B(override val foo: String, val baz: String) extends A

希望有所帮助。