从 parent classes 函数中覆盖一个 class 变量

Override a class variable from parent classes function

我有一个 parent 和 child class。

class a {
val name :String = "jo"
 def extract(){
  println(name)
 }
}

现在我需要做如下操作。

class b extends a {
 override def extract(){
  override var name :String = "dave". //the problem is here and
  super.extract()
  name = "jenny" //here
  super.extract()
 }
}

我现在面临的问题。

1) 如果 im 覆盖 class 中的值,我不能使用 var a,需要不可变才能使用覆盖。

2) 需要用不同的变量调用super函数两次

3) 无法在函数内部调用重写

如果有人知道如何解决这个问题,我们将不胜感激。我无法更改 class a 中的任何内容。我只能在 b 上工作,需要使用不同的变量值调用提取函数两次。

无法在方法内覆盖超级 class 不可变值。

相反,您可以在超级 class 中更改 var,但不要在子 class 中覆盖。

请检查以下代码。

scala> :paste
// Entering paste mode (ctrl-D to finish)

class a {
 var name = ""
 def extract(){
  println(name)
 }
}


class b extends a {
 override def extract(){
  name = "dave" //the problem is here and
  super.extract()
  name = "jenny" //here
  super.extract()
 }
}

// Exiting paste mode, now interpreting.

defined class a
defined class b

scala> (new b).extract
dave
jenny

如果您想使用不同的 name 值调用 extract 方法两次,只需扩展父对象 class 并覆盖名称,创建具有不同名称值的子对象,如下所示。

scala> :paste
// Entering paste mode (ctrl-D to finish)

class a {
 val name = ""
 def extract(){
  println(name)
 }
}


class b (override val name: String) extends a {
 override def extract(){
  super.extract()
 }
}

// Exiting paste mode, now interpreting.

defined class a
defined class b

scala> (new b("dave")).extract
dave

scala> (new b("jenny")).extract
jenny

scala>