从 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>
我有一个 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>