Почему можно переопределить метод пустых скобок с помощью object
?
trait A {
def meth = {}
def meth_p() = {}
}
class B extends A {
object meth_p
} // compiles
Переопределение метода без скобок не компилируется:
class B1 extends A {
object meth
} // does not compile
Ни одна из следующих комбинаций не работает (без модификатора override
):
class BX extends A {
// of course, each declaration should get its own class
def meth = {}
def meth_p() = {}
def meth() = {}
def meth_p = {}
val meth = {}
val meth_p = {}
// ...
}
Это документированное и полезное поведение? Я только что столкнулся с очень тонкой ошибкой из-за этого случайного переопределения.