Qual é a diferença entre os diferentes métodos de substituição no Scala?
O Scala permite que você substitua um método de duas formas legais:
Dado super classe:
class A {
def a = "A"
}
Podemos substituir o método "a" por:
class B extends A {
override def a = "B"
}
e
class B extends A {
override def a() = "B"
}
ambos parecem substituir o método "a" corretamente. Qual é a decisão de design por trás disso? Por que permitir "a ()" em B para anular "a" em A?