Что я могу использовать модификатор private final
в Scala для?
Учитывая приведенный ниже код:
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
Понятно, почему строка 2 не печатает bar of B
, потому что на самом деле существуют два определения foo
, а последнее в B не переопределяет первое в A. В противном случае Scala потребуется override
- вместо модификатора final
.
Итак, почему Scala не просто запрещает комбинацию модификаторов private final
?