【发布时间】:2018-08-22 22:44:38
【问题描述】:
考虑抽象类Element,这是许多子类的超类,例如ArrayElement,每个子类都有自己的帮助方法,但具有共同的param属性
我需要用that 对象调用辅助方法printValue。 check 方法在运行时接收 ArrayElement 对象。因此,在运行时,我希望不会有任何问题。
但是,这段代码没有编译,that 对象在编译时在抽象类Element 中寻找printValue 方法。它迫使我在Element 中声明printValue
ArrayElement中的所有辅助方法都需要在超抽象类Element中声明?
object ObjectTest {
def main(args: Array[String]): Unit = {
val x = new ArrayElement(999).check(new ArrayElement(333))
}
}
abstract class Element {
val param : Int
def printValue : String // commenting this line throws error below
}
class ArrayElement(override val param : Int) extends Element {
def check(that: Element) = {
this.printValue
println(that.param)
println(that.printValue) // throws error -- **value printValue is not a member of org.mytest.challenges.Element**
}
def printValue = "value:" + param
}
【问题讨论】:
-
将此行
println(that.x)更改为println(that.param)希望这不是一个错误? -
对不起。那是一个错字。我编辑了我的问题。
标签: scala