【发布时间】:2012-06-19 21:06:07
【问题描述】:
我的类继承自某个基类,并实现apply 方法,其签名与基类完全相同。我想从我的班级中调用 base 的 apply 方法。
当我尝试以下操作时:
class MyClass extends BaseClass {
def apply(k: String, v: String) = {
super.apply(k, v)
...
}
...
}
我收到value apply is not a member of BaseClass... 编译错误。
如何从子类调用 base 的 apply 方法?
另外,为什么可以在没有 override 关键字的情况下覆盖 apply 方法?
编辑:实际代码:
class OAuthParamsBuilder(helper: OAuthParamsHelper)
extends KeyValueHandler {
def apply(k: String, v: String): Unit = {
...
}
}
class OAuthInitSupportBuilder
extends OAuthParamsBuilder(StandardOAuthParamsHelper) {
/*override*/ def apply(k: String, v: String): Unit = {
super.apply(k, v)
...
}
...
}
编辑:我注意到 KeyValueHandler 是一个特征,这可能是一个问题。
trait KeyValueHandler extends ((String, String) => Unit)
【问题讨论】:
-
你能添加
BaseClass的代码吗? -
如果您清理并重新编译所有内容,问题是否仍然存在?
标签: scala inheritance overriding superclass super