私は抽象メソッドと具体的な実装メソッドを持つ特性を持っているので、次のようなものです:
trait MyTrait extends BaseClass {
def myAbstractMethod: MyReturnType
def myConcreteMethod = { /*implementation*/ }
}
今、私は特性を混ぜ合わせます:
class MyClass extends BaseClass with MyTrait {
}
BaseClassは抽象メソッドを実装していません。トレイトをミックスするときに、scalaコンパイラーが抽象メソッドを(Javaインターフェースのように)実装する必要があることを強制することを期待していました。ただし、コンパイラエラーはありません。
私の特定のケースはもっと複雑です。実行時に何が起こるかをまだテストできませんでした。
- なぜscalaコンパイラはabstractメソッドの実装を強制しないのですか?
- Scalaコンパイラにabstractメソッドの実装を強制させることはできますか?
- 要約を追加するか、どこかでオーバーライドする必要がありますか?
- MyClassのインスタンスを作成して使用しようとすると、実行時に何が起こりますか?