【发布时间】:2020-11-11 10:31:34
【问题描述】:
我的 Scala 类的结构如下:
trait ActualClass extends ParentClass {
override def method1(inputStr:String):String = {
"actual "+ inputStr
}
def execute():String = {
this.method1("test")
}
}
trait WithClass extends ParentClass {
override def method1(inputStr:String):String = {
"with "+ inputStr
}
}
class ParentClass {
def method1(inputStr:String):String = {
"parent "+ inputStr
}
}
object TestClass extends App{
val actualClass = new ActualClass with WithClass {
}
println(actualClass.execute())
}
观察到的行为:
- 在 ActualClass 执行方法中使用 this.method1:打印“With Test”
- 在 ActualClass 执行方法中使用 super.method1:打印“父测试”
预期行为: 我需要它来打印:“实际测试”
那么我如何调用 ActualClass 中的方法 1,而不是来自 WithClass 或 ParentClass。是否有特定的关键字。
【问题讨论】:
-
new ActualClass with WithClass的整个想法是 WithClass 覆盖了 ActualClass 的常见定义。
标签: scala inheritance overriding multiple-inheritance