【发布时间】:2012-11-26 15:44:17
【问题描述】:
我有一个特点是抽象方法和具体实现的方法,所以是这样的:
trait MyTrait extends BaseClass {
def myAbstractMethod: MyReturnType
def myConcreteMethod = { /*implementation*/ }
}
现在我混合特征:
class MyClass extends BaseClass with MyTrait {
}
BaseClass 没有实现抽象方法。当我混合特征时,我希望 scala 编译器强制必须实现抽象方法(就像 Java 接口一样)。但是没有编译错误。
我的特殊情况更复杂。我还无法测试运行时会发生什么。
- 为什么 scala 编译器不强制执行抽象方法?
- 我可以让 scala 编译器强制执行抽象方法吗?
- 我必须在某处添加抽象或覆盖吗?
- 当我尝试创建和使用 MyClass 的实例时,运行时会发生什么?
【问题讨论】:
-
当我在同一个文件/项目中出现其他错误(但在工作区中的其他项目中没有)时,我刚刚遇到了这个问题。我将 Eclipse 4.5 (Mars) 与 Scala 4.2.0 一起使用。我已将此报告为错误:assembla.com/spaces/scala-ide/support/tickets/…
标签: scala compiler-construction mixins traits abstract-methods