private finalScalaの修飾子は何に使用できますか?
以下のコードが与えられます:
1| class A { def callFoo = foo; private final def foo = "bar of A" }
2| class B extends A { private final def foo = "bar of B"}
3| println((new A()).callFoo)
4| println((new B()).callFoo)
3行目と4行目:
1| bar of A
2| bar of A
bar of B実際には2つのfoo定義があり、Bの後者がAの前者をオーバーライドしないため、 2行目が印刷されない理由は理解できます。そうでない場合、Scalaは修飾子overrideの代わりに-を必要とします。final
では、なぜScalaは単に修飾子の組み合わせを禁止しないのprivate finalでしょうか?