使用父类对象在 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中有等效的方法吗?

这里有多种解决方案。例如,定义 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

希望有帮助。

最新更新