¿Cuál es la diferencia entre los diferentes métodos que prevalecen en Scala?
Scala le permite anular un método de dos maneras legales:
Dada súper clase:
class A {
def a = "A"
}
Podemos anular el método "a" por:
class B extends A {
override def a = "B"
}
y
class B extends A {
override def a() = "B"
}
Ambos parecen anular el método "a" correctamente. ¿Cuál es la decisión de diseño detrás de esto? ¿Por qué permitir que "a ()" en B anule "a" en A?