0

我有一个关于 Scala 覆盖的问题(正如我的标题所示)

现在我有以下类/特征:

trait FSM {def transitionGraph:Map[String,(JsValue,FSM)]
abstract class AClass: FSM { def transitionGraph }

class Class extends AClass{ override def transitionGraph ... } <-- Wont work

trait OverrideTrait extends AClass { abstract override def transitionGraph } <-- works
class NewClass extends OverrideTrait { } <--- Works, I can use the overridden transitionGraph

我的问题是:为什么我不能覆盖抽象类中的东西。是不是因为我从不允许实例化一个抽象类。因此行为:

val AClass class = new Class 

永远不允许发生?

谢谢。

4

2 回答 2

0

您的代码示例无法编译。但是一旦你纠正了一些事情,它应该会起作用:

trait FSM {def transitionGraph:Map[String,(JsValue,FSM)]}

abstract class AbstractClass extends FSM { def transitionGraph }

class ConcreteClass extends AbstractClass{ def transitionGraph = ??? }

val someClass: AbstractClass = new ConcreteClass
于 2014-10-21T07:39:11.830 回答
0

您给出的代码中似乎省略了很多东西,所以我不确定我是否得到了这个问题,但这里有类似的东西可以编译:

trait FSM { def transitionGraph: String }
abstract class AClass extends FSM { def transitionGraph: String }

class Class extends AClass { override def transitionGraph = ??? }

trait OverrideTrait extends AClass { override def transitionGraph = ??? }
class NewClass extends OverrideTrait { }

这有帮助吗?

于 2014-10-21T07:39:31.153 回答