我有一个抽象方法和具体实现方法的特征,所以是这样的:
trait MyTrait extends BaseClass {
def myAbstractMethod: MyReturnType
def myConcreteMethod = { /*implementation*/ }
}
现在我混合特征:
class MyClass extends BaseClass with MyTrait {
}
BaseClass 不实现抽象方法。当我混合特征时,我希望 scala 编译器强制执行抽象方法(就像 Java 接口一样)。但是没有编译器错误。
我的特殊情况更复杂。我还无法测试运行时会发生什么。
- 为什么scala编译器不强制执行抽象方法?
- 我可以让 scala 编译器强制执行抽象方法吗?
- 我必须在某处添加抽象或覆盖吗?
- 当我尝试创建和使用 MyClass 的实例时,运行时会发生什么?